R:选择满足列条件的情况

时间:2018-09-25 13:42:25

标签: r loops

我有一个像这样的数据框:

x y z country
1 4 1 USA
3 1 1 Canada
0 1 1 Spain
0 2 3 USA
4 1 1 Canada

我需要选择在所有数据框中至少出现1000次国家的数据。例如,假设只有美国和加拿大符合该条件。问题是我有40多个国家/地区和500,000个案例,所以我无法逐案进行。

我想我需要一个“ for”循环来做,但是我不知道该怎么做。

3 个答案:

答案 0 :(得分:0)

首先获取所需国家的名称。然后按这些名称子集。

tab <- table(df$country)
mycountries <- names(tab[tab > 1000])
df <- df[df$country %in% mycountries, ]

答案 1 :(得分:0)

使用data.table并假设您的数据框名为df,我们可以创建一个名为count的变量,该变量计算每个country的行总数,然后将其子集为仅包含>1000行的国家/地区:

library(data.table)
setDT(df)

df[ , count := .N, by=country]
df[count > 1000]

答案 2 :(得分:0)

使用dplyr的一种可能的解决方案:

library(dplyr)

df %>%
  group_by(country) %>%
  summarise(count = n()) %>%
  filter(count >= 1000) %>%
  arrange(desc(count))