我有3个数据框,我必须从中找到少于2个国家的大陆并删除这些国家/地区(行)。数据帧的结构类似于下面称为x的数据帧:
row Country Continent Ranking
1 Kenya Africa 17
2 Gabon Africa 23
3 Spain Europe 04
4 Belgium Europe 03
5 China Asia 10
6 Nigeria Africa 14
7 Holland Europe 01
8 Italy Europe 05
9 Japan Asia 06
首先,我想知道每个大洲每个国家的频率,所以我做了
x2<-table(x$Continent)
x2
Africa Europe Asia
3 4 2
然后我想确定少于2个国家的大陆
x3 <- x2[x2 < 10]
x3
Asia
2
我现在的问题是如何删除这些国家/地区。对于上面的例子,它将是亚洲的两个国家,我希望我的最终数据集如下所示:
row Country Continent Ranking
1 Kenya Africa 17
2 Gabon Africa 23
3 Spain Europe 04
4 Belgium Europe 03
5 Nigeria Africa 14
6 Holland Europe 01
7 Italy Europe 05
少于2个国家/地区的大陆数量因数据框架而异,因此我需要一种可以适用于所有国家的通用方法。
答案 0 :(得分:4)
尝试
library(dplyr)
x %>%
group_by(Continent) %>%
filter(n()>2)
# row Country Continent Ranking
#1 1 Kenya Africa 17
#2 2 Gabon Africa 23
#3 3 Spain Europe 04
#4 4 Belgium Europe 03
#5 6 Nigeria Africa 14
#6 7 Holland Europe 01
#7 8 Italy Europe 05
或使用x2
subset(x, Continent %in% names(x2)[x2>2])
# row Country Continent Ranking
#1 1 Kenya Africa 17
#2 2 Gabon Africa 23
#3 3 Spain Europe 04
#4 4 Belgium Europe 03
#6 6 Nigeria Africa 14
#7 7 Holland Europe 01
#8 8 Italy Europe 05
答案 1 :(得分:3)
“data.table”的一个非常简单的方法是:
Component
在基地R你可以尝试:
Control