如何计算列的平均值并删除R中的某些行?

时间:2020-06-17 05:13:04

标签: r

当我有一个类似的数据框时;

    C1  C2  C3  C4  C5
R1  27  38  94  40  4
R2  69  16  85  2   15
R3  30  35  64  95  6
R4  20  33  77  98  55
R5  20  44  60  33  89
R6  12  88  87  44  38

,我想计算C4到C5列的平均值。之后,我只想保留高于50的行。

由于只有R4和R5行满足条件,所以我的最终输出应该是:

    C1  C2  C3  C4  C5  Average C4:C5
R4  20  33  77  98  55       77
R5  20  44  60  33  89       61

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用:

subset(transform(df, Avg = (C4 + C5)/2), Avg > 50)

#   C1 C2 C3 C4 C5  Avg
#R3 30 35 64 95  6 50.5
#R4 20 33 77 98 55 76.5
#R5 20 44 60 33 89 61.0

或在dplyr中:

library(dplyr)
df %>% mutate(Avg = (C4 + C5)/2) %>% filter(Avg > 50)

如果要考虑计算许多列,则可以使用rowMeans

cols <- paste0('C', 4:5)
df$Avg <- rowMeans(df[cols])
subset(df, Avg > 50)