R中的缺失值不允许计算条件均值

时间:2017-07-24 18:34:53

标签: r

对于此数据集:

index    age   gender
1        10      F
2        NA      M
3        20      F
4        30      NA
6        40      M
7        30      M

我试图计算女性(F)的年龄平均值。如您所见,两列都有NA值。这是我的代码:

mean(age [gender == "F"], na.rm=TRUE)

但它返回NA。我还尝试了以下方法从性别列中删除NA,但没有结果:性别=(性别,na.rm = TRUE)。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

似乎对我有用

x <- read.table(text="
    index    age   gender
    1        10      F
    2        NA      M
    3        20      F
    4        30      NA
    6        40      M
    7        30      M", header=TRUE)

mean(x$age[x$gender == "F"], na.rm=TRUE)
# 15

虽然有一些建议。

  • F不是一个保留词,但默认情况下它是FALSE的别名,因此为了便于阅读,最好这样做。
  • 对正在处理的数据框使用str(),前两列显示为numeric还是integer
  • 按要素汇总的另一种方法是使用aggregate()
 
aggregate(age ~ gender, data=x, mean)
#   gender age
# 1      F  15
# 2      M  35