我已经清理了一组数据框中的一列并生成了一个列表,现在我想提取与清理后的数据(列表)匹配的整个数据框。
例如,我有一个清理过的列表:
x = c(1,2,3,4,2,1,3)
和我的原始数据框架是:
> b <- data.frame( y = c(1,2,3,4,5,6,2,1,3,5,2,1),
+ z = c("a","s","d","f","g","h","j","k","l","z","x","c"))
> b
y z
1 1 a
2 2 s
3 3 d
4 4 f
5 5 g
6 6 h
7 2 j
8 1 k
9 3 l
10 5 z
11 2 x
12 1 c
我想让我更新的数据框架看起来像:
y z
1 1 a
2 2 s
3 3 d
4 4 f
5 2 j
6 1 k
7 3 l
然后我使用:
> b1<-subset(b, (y %in% x))
> b1
y z
1 1 a
2 2 s
3 3 d
4 4 f
7 2 j
8 1 k
9 3 l
11 2 x
12 1 c
但是我的列表中没有
11 2 x
12 1 c
我该怎么做才能得到我想要的数据帧?(订单)
计算每个数字在x
和table(x)
中出现的次数,并且对于y
中的每个组/值,删除超过该值的行:
b %>%
group_by(y) %>%
filter(row_number() <= table(x)[paste(cur_group())])