我正在使用几个多年来测量相同变量的数据集。我试图向每个数据集添加一个年份变量,但更一般地说,我想循环遍历向量中的元素并将每个元素添加为数据帧列表中的新列。这个问题与我的类似,但我想将向量中的每个元素作为新列迭代添加到相应的数据帧中:R - 循环中多个数据帧的新变量 https://stackoverflow.com/questions/37523158/r-new-variables-over-several-data-frames-in-a-loop?rq=1
这是示例数据:
year <- c(1:3)
data1 <- data.frame(var1 = c(1:5))
data2 <- data.frame(var1 = c(11:15))
data3 <- data.frame(var1 = c(21:25))
data_list <- list(data1 = data1, data2 = data2, data3 = data3)
我想这样做,但认为可能有某种方法可以循环(或重叠),但我还没有弄清楚:
data1$year <- year[1]
data2$year <- year[2]
data3$year <- year[3]
由于我有多年的工作经验和数据集,因此如果有一个更有效的解决方案就太好了。谢谢!
基于@@thelatemail 评论的完整答案:
功能Map(cbind, data_list, year=year)
应该做这项工作。一步步:
-
Map
函数表示循环遍历列表中的元素
-
cbind
附加新创建的列
-
year = years
创建名为的新列year
基于向量中的元素years
有你的虚拟示例:
# vector of values you wish to add
years <- c(1:3) # changed to plural to indicate vector of values rather than single value
# make dummy list of dataframes
data1 <- data.frame(var1 = c(1:5))
data2 <- data.frame(var1 = c(11:15))
data3 <- data.frame(var1 = c(21:25))
data_list <- list(data1 = data1, data2 = data2, data3 = data3)
# Loop through list of dataframes and to each dataframe add a new column
Map(cbind, data_list, year=years)
你想要的输出:
$`data1`
var1 year
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
$data2
var1 year
1 11 2
2 12 2
3 13 2
4 14 2
5 15 2
$data3
var1 year
1 21 3
2 22 3
3 23 3
4 24 3
5 25 3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)