【问题标题】:Finding average of one column based on the average values from another column [duplicate]根据另一列的平均值查找一列的平均值[重复]
【发布时间】:2017-10-27 08:05:19
【问题描述】:

执行此代码后,我得到了 12 行数据,其中包含一个新列 A1。我想要一个功能,对于出现在A1 中的所有“1”,我应该得到相应 Sepal.Length 值的平均值,类似于“2”和“3”,并将三个平均值分配给一个新的向量。所以总而言之,根据上面的要求,一个具有三个平均值的向量。

iris1 = iris[1:12,]
a = data.frame(A1=rep(1,4))
b = data.frame(A1=rep(2,4))
c = data.frame(A1 = rep(3,4))
abc = rbind(a,b,c)
abc
iris2 = data.frame(abc,iris1)
View(iris2)

【问题讨论】:

  • 你的意思是按 A1 分组,并得到每一行的 Sepal.Length 的平均值吗?预期的输出是什么?
  • 例如sapply(split(iris2$Sepal.Length, iris2$A1), mean)aggregate(Sepal.Length ~ A1, iris2, mean)?
  • 感谢 Axeman,完美解决了我的问题。

标签: r dataframe dplyr


【解决方案1】:

试试这个

library(dplyr)
iris2 %>% group_by(A1) %>% summarise(Avg = mean(Sepal.Length,na.rm = TRUE))

如果你真的只想要带有平均值的向量

iris2 %>% group_by(A1) %>% summarise(Avg = mean(Sepal.Length,na.rm = TRUE)) %>% `$`(Avg)

【讨论】:

  • 另外,请参阅 dplyr::pull 而不是 .$Avg
  • 谢谢 Bertil,我会考虑这个,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 2019-08-05
  • 2018-07-12
  • 2020-05-25
  • 2020-08-10
  • 2020-12-26
相关资源
最近更新 更多