r语言 - 如何根据另一个列表提取数据框中的行



我已经清理了一组数据框中的一列并生成了一个列表,现在我想提取与清理后的数据(列表)匹配的整个数据框。

例如,我有一个清理过的列表:

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

我该怎么做才能得到我想要的数据帧?(订单)

计算每个数字在xtable(x)中出现的次数,并且对于y中的每个组/值,删除超过该值的行:

b %>%
group_by(y) %>%
filter(row_number() <= table(x)[paste(cur_group())])

最新更新