【问题标题】:Apply a function (e.g. mean) using corresponding elements of dataframes in list of dataframes [duplicate]使用数据帧列表中数据帧的相应元素应用函数(例如平均值)[重复]
【发布时间】:2020-10-30 12:26:35
【问题描述】:

我有一个包含 10 个数据框的列表,其中每个元素代表一个不同的变量。

l1 <- list(d1=data.frame(a=c(1,2,3), b=c(4,5,6)),
           d2=data.frame(a=c(3,2,1), b=c(6,5,4)),
       d3=data.frame(a=c(2,2,2), b=c(5,5,5)))

我想对所有数据框的每个对应元素求一个平均值。 所以对于元素 [1,1],我的平均值是 (1,3,2)。 我可以在一个职位上做到这一点:

m1_1<-mean(unlist(lapply(l1, function(x) (x[[1,1]]))))

有没有办法扩展整个数据框的索引? 谢谢, M.

【问题讨论】:

标签: r dataframe mean


【解决方案1】:

我们可以用Reduce得到对应元素的和(+),然后除以listlength

Reduce(`+`, l1)/length(l1)

或者对于更一般的情况转换为array,然后使用apply

ar1 <- array(unlist(l1), dim = c(dim(l1[[1]]), length(l1)))
apply(ar1, 1:2, mean, na.rm = TRUE)
apply(ar1, 1:2, median, na.rm = TRUE)
apply(ar1, 1:2, sd, na.rm = TRUE)

【讨论】:

  • 谢谢,我应该写一个更一般的函数,而不仅仅是一个意思。我还想得到标准差和其他一些值。
猜你喜欢
  • 2017-12-22
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
相关资源
最近更新 更多