按ID拆分列表并将结果存储到单独的向量

时间:2017-05-01 00:40:41

标签: r

给定一个列表,我转换为数据帧,提供以下结构:

df <- data.frame(list('value' = c(3.166667,3.166667,3.416667,3.291667,3.00,2.75), 'ID' = c(511,511,532,532,556,556)))

$value
[1] 3.166667 3.166667 3.416667 3.291667 3.000000 2.750000

$ID
[1] 511 511 532 532 556 556

我需要将ID的观察结果分成向量。但是,我的尝试

X <- split(myList, myList$ID)

结果如下:

$`511`
     value  ID
1 3.166667 511
2 3.166667 511

$`532`
     value  ID
3 3.416667 532
4 3.291667 532

$`556`
  value  ID
5  3.00 556
6  2.75 556

然而,我希望得到这个结构(原始df中的每一行都是一个不同的变量)

$1
     value    ID
1    3.166667 511
3    3.416667 532
5    3.00     556

$2
     value    ID
2    3.166667 511
4    3.291667 532
6    2.75     556

我如何做到这一点?提前致谢

1 个答案:

答案 0 :(得分:1)

我们可以使用rowid

中的data.table轻松完成此操作
library(data.table)
split(df, rowid(df$ID))
#$`1`
#     value  ID
#1 3.166667 511
#3 3.416667 532
#5 3.000000 556

#$`2`
#     value  ID
#2 3.166667 511
#4 3.291667 532
#6 2.750000 556