繁体   English   中英

如何使用lapply获取列表中所有数据框中特定列的均值?

[英]How to use lapply to get the mean of a specific column in all dataframes of the list?

我有一个包含160个数据框的列表,所有数据框都具有相同的结构。 每个数据框对应一个国家

Afghanistan <- data.frame(seq(1970, 2010, 10), c(20,30,30,40,10))
Albania <- data.frame(seq(1970, 2010, 10), c(10, 40, NA, 50, 20))
colnames(Afghanistan) <- (c("Year", "Value"))
colnames(Albania) <- (c("Year", "Value"))
List1 <- list(Afghanistan, Albania)

每个数据框的结构如下:

Year    Value
1970    20
1980    30
1990    30
2000    40
2010    10

如何获取列表中每个数据框的“值”列的平均值。 我尝试使用lapply函数,但无法弄清楚如何正确执行它。 这不起作用:

lapply(List1[[]][,2], mean, na.rm = T)

还是将所有数据框合并为一个大数据框,然后使用合计获取每个国家/地区的均值会更好?

如果您有这样的列表:

my_list <- list(data.frame(year = c(2000:2003),
                           value = c(1:4)),
                data.frame(year = c(2000:2003),
                           value = c(5:8)))

您可以使用lapply()遍历该列表。 每个x都是一个data.frame ,您可以使用$来访问列:

lapply(my_list, function(x) {
  mean(x$value)
})

这将返回

[[1]]
[1] 2.5

[[2]]
[1] 6.5

编辑后更新:

lapply(List1, function(x) {
  mean(x$Value, na.rm = TRUE)
})

返回:

[[1]]
[1] 26

[[2]]
[1] 30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM