首页 > 解决方案 > 在R中,如果给定另一列中的值相等,我如何平均列中的值

问题描述

对我昨天问的一个问题进一步提问。

    Year    CW  PIECE       n
1   2018    31  Y5 A        11
2   2018    32  Y5 A        1   
3   2018    33  Y5 A        2
4   2018    36  Y5 B        25
5   2018    37  Y5 B        5

同样,我有一个相当大的数据集。有没有一种简单的方法来循环查看 - 对于“PIECE”的每个唯一值(因此对于这个小样本,平均 Y5 A 值得到 4.67 和 Y5 B 得到 15)来平均列中的值“n”

标签: r

解决方案


尝试使用dplyr. 您可以分组PIECE,然后使用mutate()

library(dplyr)
#Code
newdf <- df %>% group_by(PIECE) %>% mutate(Mean=mean(n,na.rm=T))

输出:

# A tibble: 5 x 5
# Groups:   PIECE [2]
   Year    CW PIECE     n  Mean
  <int> <int> <chr> <int> <dbl>
1  2018    31 Y5 A     11  4.67
2  2018    32 Y5 A      1  4.67
3  2018    33 Y5 A      2  4.67
4  2018    36 Y5 B     25 15   
5  2018    37 Y5 B      5 15   

或者summarise()

#Code2
newdf <- df %>% group_by(PIECE) %>% summarise(Mean=mean(n,na.rm=T))

输出:

# A tibble: 2 x 2
  PIECE  Mean
  <chr> <dbl>
1 Y5 A   4.67
2 Y5 B  15  

推荐阅读