对于此数据集:
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)。
有什么建议吗?
答案 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