【问题标题】:Appending items to a column of vectors in R将项目附加到 R 中的向量列
【发布时间】:2013-05-12 01:38:31
【问题描述】:

我有两个数据框,一个包含唯一受试者 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])

   }

}

导致以下警告: 要替换的项目数不是替换长度的倍数

【问题讨论】:

    标签: r


    【解决方案1】:

    也许将其存储为列表:

    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]
    

    【讨论】:

      猜你喜欢
      • 2015-03-31
      • 2014-04-09
      • 2021-11-22
      • 1970-01-01
      • 2018-08-13
      • 2015-05-13
      • 2015-05-23
      • 2011-05-15
      • 2011-10-12
      相关资源
      最近更新 更多