将数据帧列表合并到一个带有 id 的数据帧中
merge list of dataframes into one dataframe with id
我有一个数据框,第一列是参与者的 ID,第二列是他们的响应 json 数组。
所以它基本上是一个包含 240 个观察值的数据框:240 个参与者代码和 240 个数组,每个观察值有 13 个响应,每个可以转换为 3X10 数组
看起来像这样:
我使用 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。
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")
我有一个数据框,第一列是参与者的 ID,第二列是他们的响应 json 数组。 所以它基本上是一个包含 240 个观察值的数据框:240 个参与者代码和 240 个数组,每个观察值有 13 个响应,每个可以转换为 3X10 数组 看起来像这样:
我使用 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。
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")