【问题标题】:How to subset a dataframe in R with multiple conditions?如何在具有多个条件的 R 中对数据框进行子集化?
【发布时间】:2021-05-29 08:10:58
【问题描述】:

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

library(dplyr)
library(dslabs)

df1 <- data.frame(gapminder)


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

此代码仅返回 NA。我尝试了不同的变体,看了几堂课,但还是不明白,感谢您的帮助。

【问题讨论】:

  • 我猜你的意思是a &lt;- df1$year &gt;= 2004; df1[df1$country %in% "Russia" &amp; a, ]

标签: r dplyr filtering subset


【解决方案1】:

您可以使用$(而不是@)引用该列,'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)

【讨论】:

  • 非常感谢,我在任何地方都找不到准确的指导,我一个人挣扎了好几个小时
猜你喜欢
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 2022-06-18
  • 2021-02-16
  • 1970-01-01
相关资源
最近更新 更多