给定一个列表,我转换为数据帧,提供以下结构:
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
我如何做到这一点?提前致谢
答案 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