【发布时间】:2021-02-15 04:05:35
【问题描述】:
我有一个包含大量数据框的列表(每个数据框代表一年)。每个数据框由两个变量组成:(1) ID 变量,和 (2) 表示当年是否发生事件的伯努利变量。我想取消列出该列表,而是创建一个数据框,其中每年的结果变量是它自己的列。
您可以在下面找到生成示例数据的代码,这些示例数据与我的数据具有相同的特征。
set.seed(123)
df <- list()
year <- (1950:1960)
# Simulating data.
for (i in 1:length(year)) {
id <- sample(1:20, 10)
outcome <- sample(0:1, 10, replace = T)
df[[i]] <- cbind(id, outcome)
}
所以实际上,我想取消列出 df 并创建一个看起来像这样的数据框:
id outcome1950 outcome1951 outcome1952 outcome1953 outcome1954 outcome1955 [...]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
[9,] 9
[10,] 10
[11,] 11
[12,] 12
[13,] 13
[14,] 14
[15,] 15
[16,] 16
[17,] 17
[18,] 18
[19,] 19
[20,] 20
当然,结果应该具有每年的每个值。
注意:并非所有年份都存在所有 ID,在这种情况下,我想添加一个 NA。
【问题讨论】:
-
谢谢,DPH、Roccer 和 DaveArmstrong,您的所有解决方案都成功了。谢谢你拯救了我的一天!
-
欢迎。顺便提一句。我曾经有一个类似的问题。如果您想要更多选项,可以在这里查看:stackoverflow.com/questions/63613264/…
标签: r list dplyr data-manipulation