一个方便的技巧(特别是对于统计测试)是将宽数据帧转换为带有嵌入列表的长数据帧。
df <- data.frame(
A = sample(c(1:10),1000,replace = TRUE),
B = sample(c(1:10),1000,replace = TRUE),
C = sample(c(1:10),1000,replace = TRUE)) %>%
gather %>% group_by(key) %>%
summarize(response_list = list(value))
给定带有嵌入列表的data.frame,如何为每个嵌入列表附加摘要计数,以便data.frame看起来像这样:
key response_list 1 2 3 4 5 6 7 8 9 10
A list() x x x x x x x x x x
...
其中,x,是嵌入列表中每个数字出现的相应计数(类似于table(factor(the_list())
)
答案 0 :(得分:3)
df <- cbind(df, do.call(rbind, lapply(df$response_list, table)))
tbl_df(df)
# Source: local data frame [3 x 12]
#
# key response_list 1 2 3 4 5 6 7 8 9 10
# (fctr) (chr) (int) (int) (int) (int) (int) (int) (int) (int) (int) (int)
# 1 A <int[1000]> 97 105 97 100 103 103 86 101 90 118
# 2 B <int[1000]> 98 100 108 92 115 87 101 105 98 96
# 3 C <int[1000]> 109 97 87 92 91 90 114 109 104 107