如何在多个条件下对 R 中的数据帧进行子集化?

How to subset a dataframe in R with multiple conditions?

需要在预安装的数据集 gapminder 中查找 2004 年后俄罗斯的平均生育率。

library(dplyr)
library(dslabs)

df1 <- data.frame(gapminder)


a <- df1@year >= 2004
df1[df1$fertility %in% c("Russia", a), ]

此代码 returns 仅限 NA。我尝试了不同的变体并观看了一些讲座,但无法弄清楚,非常感谢您的帮助。

您可以使用 $(而不是 @)引用该列,'Russia' 也出现在 country 列中,但您正在检查 fertility.

尝试:

library(dplyr)
df1 %>%
  filter(country == 'Russia', year >= 2004) %>%
  summarise(avg_fertility = mean(fertility, na.rm = TRUE))

#  avg_fertility
#1      1.493333

不使用 filter

df1 %>%
  summarise(avg_fertility = mean(fertility[country == 'Russia' & 
                                           year >= 2004], na.rm = TRUE))

在基数 R 中:

mean(subset(df1, country == 'Russia' & year >= 2004)$fertility, na.rm = TRUE)