将数据框列表合并为一个ID为ID的数据框

时间:2018-08-27 13:30:15

标签: r dplyr plyr

我有一个数据框,其中参与者的ID作为第一列,他们的响应作为json数组作为第二列。 因此,它基本上是一个包含240个观察值的数据帧:240个参与者代码,以及每个观察值中具有13个响应的240个数组,每个数组都可以转换为3X10数组  看起来像这样:

enter image description here

我使用jsonlite::fromJSON将json转换为数据帧,结果得到了data.frames列表(为简化起见,简称:)

[[1]]
   case_n  d1  d2
1      13   0 100
2      12 100   0
3      11   0 100

[[2]]
   case_n  d1  d2
1      12  50  50
2       8  50  50
3       3  50  50


[[3]]
   case_n d1 d2
1      11 50 50
2       7 50 50
3      13 50 50

我知道可以将它们合并到一个包含所有数据帧的大型数据帧中,例如使用plyr :: ldply

df <- ldply(converted_json, data.frame)

如何将扩展的df与初始participant.code正确合并?

所以想要的结果将是类似的

partcode   case_n d1 d2
8pdpaqyv      11 50 50
8pdpaqyv       7 50 50
8pdpaqyv      13 50 50
3q8o3mry      11 50 50
3q8o3mry       7 50 50
3q8o3mry      13 50 50
1kueczzz      11 50 50
1kueczzz       7 50 50
1kueczzz      13 50 50

更新:该任务与此question有点不同,因为我还需要存储来自初始数据的ID。

1 个答案:

答案 0 :(得分:1)

dplyr::bind_rows应该执行您想要的操作(它绑定列表元素)。您必须为.id传递附加参数。要创建此.id,您必须命名列表元素。

# Name list elements
names(converted_json) <- dataOriginal$participant.code
# bind rows and add .id
library(dplyr)
bind_rows(converted_json, .id = "partcode")