我有两个数据框,一个带有一个独特的主题ID列表(长度为39),另一个带有一个主题ID列表,如果受试者参与多个试验。我想
基本上,我需要离开:
a 23
a 33
a 18
b 90
b 2
到此:
a [23, 33, 18]
b [90, 2]
我一直在这可怜地工作了几个小时,我会很乐意得到任何帮助!
我已经尝试了一百万件事,但似乎没有一件工作!
for (i in 1:39) {
for (j in 1:119) {
if (datafram1$ids[i] == datafram2$ids[j]) datafram1$cases[i] <- append(datafram1$cases[i],datafram2$scores[j])
}
}
会产生以下警告: 要替换的项目数量不是替换长度的倍数
答案 0 :(得分:2)
也许将其存储为列表:
dat <- read.table(text="a 23
a 33
a 18
b 90
b 2", header=FALSE)
with(dat, tapply(V2, V1, c))
## $a
## [1] 23 33 18
##
## $b
## [1] 90 2
如果您希望它看起来像您的输出:
FUN <- function(x) paste0("[", paste(x, collapse=", "), "]")
aggregate(V2~V1, dat, FUN)
## V1 V2
## 1 a [23, 33, 18]
## 2 b [90, 2]