如果至少有一个或多个值匹配,如何对 R 数据框行进行子集化?

如果至少有一个或多个值匹配,要对 R 数据框行进行子集化,我们可以按照以下步骤操作 -

  • 首先,创建一个数据框。

  • 然后,如果至少一个或多个值匹配,则使用 rowSums 函数以及 sapply 函数和匹配值对数据框行进行子集化。

示例

创建数据框

让我们创建一个数据框,如下所示 -

x<-rpois(25,5)
y<-rpois(25,5)
z<-rpois(25,5)
df<-data.frame(x,y,z)
df
输出结果

执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-

    x y  z
1   5 5  2
2  10 5  5
3   3 4  6
4   9 4 12
5   2 4  5
6   3 4  4
7   4 3  9
8   4 5 10
9   5 3  9
10  3 2  2
11  2 8  4
12  4 5  2
13  2 9  2
14  5 2  1
15  6 2  7
16  2 4  7
17  7 5  5
18  3 3  1
19  4 4  7
20  7 4  5
21  4 4  4
22  3 6  2
23  3 2  7
24  1 3  3
25  5 4  4

子集数据框

如果这些值中的至少一个或多个匹配,则使用 rowSums 函数以及 sapply 函数和值 4,5,6,7,8 进行匹配以对数据框行进行子集化 -

x<-rpois(25,5)
y<-rpois(25,5)
z<-rpois(25,5)
df<-data.frame(x,y,z)
df[rowSums(sapply(df[], '%in%', c(4,5,6,7,8)))>0,]
输出结果
    x y  z
1   5 5  2
2  10 5  5
3   3 4  6
4   9 4 12
5   2 4  5
6   3 4  4
7   4 3  9
8   4 5 10
9   5 3  9
11  2 8  4
12  4 5  2
14  5 2  1
15  6 2  7
16  2 4  7
17  7 5  5
19  4 4  7
20  7 4  5
21  4 4  4
22  3 6  2
23  3 2  7
25  5 4  4

猜你喜欢