如何查找 R 数据框行中特定值的频率?

r programmingserver side programmingprogramming更新于 2025/4/7 22:07:17

要查找 R 数据框行中特定值的频率,我们可以使用 dplyr 包的 mutate 函数以及 rowSums 函数。

例如,如果我们有一个名为 df 的数据框,那么我们可以使用以下命令查找 df 每行中 5 的数量 −

df%>%mutate(Number_of_Fives=rowSums(.==1))

示例 1

以下代码片段创建了一个示例数据框−

x1<-rpois(20,1)
x2<-rpois(20,1)
x3<-rpois(20,1)
x4<-rpois(20,1)
x5<-rpois(20,1)
df1<-data.frame(x1,x2,x3,x4,x5)
df1

创建以下数据框 −

  x1 x2 x3 x4 x5
1  1 0  0  1  1
2  0 0  0  1  2
3  1 2  4  0  0
4  1 2  1  0  3
5  3 3  1  2  2
6  2 2  2  1  3
7  1 0  0  2  0
8  4 3  3  3  0
9  1 1  1  0  0
10 2 1  1  2  1
11 1 2  0  1  0
12 1 2  3  1  1
13 1 1  4  0  2
14 0 1  1  3  2
15 1 0  1  0  1
16 1 3  0  1  2
17 1 0  2  1  1
18 2 0  0  0  1
19 0 1  0  0  0
20 0 0  0  0  0

要加载 dplyr 包并查找 df1 中每行的 1 的数量,请将以下代码添加到上面的代码片段中 −

library(dplyr)
df1%>%mutate(Number_of_Ones=rowSums(.==1))

输出

如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −

   x1 x2 x3 x4 x5 Number_of_Ones
1  1  0  0  1  1   3
2  0  0  0  1  2   1
3  1  2  4  0  0   1
4  1  2  1  0  3   2
5  3  3  1  2  2   1
6  2  2  2  1  3   1
7  1  0  0  2  0   1
8  4  3  3  3  0   0
9  1  1  1  0  0   3
10 2  1  1  2  1   3
11 1  2  0  1  0   2
12 1  2  3  1  1   3
13 1  1  4  0  2   2
14 0  1  1  3  2   2
15 1  0  1  0  1   3
16 1  3  0  1  2   2
17 1  0  2  1  1   3
18 2  0  0  0  1   1
19 0  1  0  0  0   1
20 0  0  0  0  0   0

示例 2

以下代码片段创建了一个示例数据框 −

y1<-sample(1:3,20,replace=TRUE)
y2<-sample(1:3,20,replace=TRUE)
y3<-sample(1:3,20,replace=TRUE)
y4<-sample(1:3,20,replace=TRUE)
df2<-data.frame(y1,y2,y3,y4)
df2

创建以下数据框 −

   y1 y2 y3 y4
1  2  1  2  1
2  2  3  1  1
3  3  1  2  2
4  3  1  1  1
5  3  1  3  2
6  2  3  2  2
7  1  3  1  1
8  1  2  1  2
9  1  2  3  3
10 2  3  3  2
11 3  1  1  2
12 3  2  1  1
13 2  2  2  3
14 2  1  2  2
15 1  2  1  2
16 3  3  2  3
17 1  2  3  3
18 3  3  3  3
19 2  1  2  2
20 1  1  2  1

要查找 df2 中每行的 1 的数量,请将以下代码添加到上面的代码片段中 −

df2%>%mutate(Number_of_Ones=rowSums(.==1))

输出

如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −

   y1 y2 y3 y4 Number_of_Ones
1  2  1  2  1   2
2  2  3  1  1   2
3  3  1  2  2   1
4  3  1  1  1   3
5  3  1  3  2   1
6  2  3  2  2   0
7  1  3  1  1   3
8  1  2  1  2   2
9  1  2  3  3   1
10 2  3  3  2   0
11 3  1  1  2   2
12 3  2  1  1   2
13 2  2  2  3   0
14 2  1  2  2   1
15 1  2  1  2   2
16 3  3  2  3   0
17 1  2  3  3   1
18 3  3  3  3   0
19 2  1  2  2   1
20 1  1  2  1   3

相关文章