我有一个DF,就像下面代码创建的例子一样。
a = data.frame( name = c(rep("Tim",5),rep("John",3)),id = c(rep(1,5),rep(2,3)), value = 1:7)
我希望将其转换为看起来像这样的结果。
b = data.frame( name = c("Tim","John"), ID = c(1:2), b = NA)
b$value = list(c(1:5),c(6:8))
我将如何进行这种转变?
对于实际数据框,我将在ID列的左侧有许多列,我将要在ID字段右侧创建的列表列中执行计算。
例如,在上面的DF b上,我可能想要用" Tim"执行函数调用。作为参数并循环遍历list = {1,2,3,4,5}中的每个单独元素,该循环的输出是另一个具有相同元素数的列表。
答案 0 :(得分:1)
尝试
aggregate(value~.,a, FUN=c)
# name id value
#1 Tim 1 1, 2, 3, 4, 5
#2 John 2 6, 7, 8
a <- structure(list(name = structure(c(2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L), .Label = c("John", "Tim"), class = "factor"), id = c(1,
1, 1, 1, 1, 2, 2, 2), value = 1:8), .Names = c("name", "id",
"value"), row.names = c(NA, -8L), class = "data.frame")