用于将data.table转换为命名向量的命名列表的R函数

6yoyoihd  于 2023-02-14  发布在  其他
关注(0)|答案(2)|浏览(122)

我正在寻找R函数,在合理的时间将转换一个数据。例如表(在现实中与许多1000s条目):

id num1 name
id1    1    a
id1    5    f
id1    8    y
id1    5    z
id2    2    w
id2    5    k
id2    6    l

"num1"列的"name"列向量的"id"列命名的列表。
输出(列表)如下所示:

$id1
   a f y z
   1 5 8 5
$id2
   w k l
   2 5 6

预先感谢你的帮助。

o3imoua4

o3imoua41#

您可以使用splitsetNames获取命名向量

lapply(split(df, df[[1]]), function(x) setNames(x$num1, x$name))

#$id1
#a f y z 
#1 5 8 5 

#$id2
#w k l 
#2 5 6

类似于@StudidWolf的建议,我们也可以在这里使用by

by(df,df$id,function(x) setNames(x$num1,x$name))
mcdcgff0

mcdcgff02#

以下是data.table版本:

lst = sapply(dt[, unique(id)], function(x) {
    dt[id==x, mapply(setNames, num1, name)]
})

lst的内容则为:

> lst
$id1
a f y z 
1 5 8 5 

$id2
w k l 
2 5 6

相关问题