根据另一列中的条件计算列数据的平均值

时间:2018-02-12 18:30:39

标签: r

我有一个跨国数据结构的数据框,看起来类似于下面的内容:

ID   RANK   GRADE
123  E1     0
123  E1     42
123  E1     NA
123  E2     41
123  E2     42
456  E2     41
456  E2     41
456  E3     NA

我想根据ID计算每个Rank的Grade列的平均值,忽略值为0,因为它们是数据输入错误,并忽略NA。

例如:对于ID 123,我想要等级为E1时的等级平均值,然后是E2等等。

1 个答案:

答案 0 :(得分:0)

您可以使用group_by包中的summarizedplyr

library(dplyr)

df %>%
  filter(!is.na(GRADE),
         GRADE != 0) %>%
  group_by(ID, RANK) %>%
  summarize(mean_grade = mean(GRADE))

过滤功能是删除GRADENA0

的所有行