如何根据R中的条件找到所有列的频率?

要根据条件找到所有列的条件频率,我们可以使用 for 循环,在该循环中,我们将定义每列的长度以及我们想要查找频率的条件。

例如,如果我们有一个名为 df 的数据框,并且我们想找到每列中大于 5 的值的数量,那么我们可以使用以下给定的命令 -

Columns <- vector()

for(i in 1:ncol(df1)){

   Columns[i]<-length(df1[df1[,i] >5 ,i])

}

Columns

示例 1

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

x1<-rpois(20,1)

x2<-rpois(20,2)

x3<-rpois(20,3)

df1<-data.frame(x1,x2,x3)

df1

创建以下数据框 -

   x1 x2 x3

1  1  1  1

2  0  1  3

3  1  3  3

4  2  4  2

5  1  2  1

6  0  7  0

7  1  1  2

8  2  1  3

9  0  6  1

10 0  5  3

11 2  1  4

12 2  2 10

13 1  1  4

14 1  2  3

15 0  2  2

16 0  2  3

17 0  1  3

18 0  4  4

19 0  4  6

20 3  1  3

如果列值大于 2,为了在 df1 的每一列中找到频率,请将以下代码添加到上述代码段中 -

Columns1 <- vector()

for(i in 1:ncol(df1)){

   + Columns1[i]<-length(df1[df1[,i] >2 ,i])

+ }

Columns1

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 1 7 13

示例 2

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

y1<-rnorm(20)

y2<-rnorm(20)

y3<-rnorm(20)

df2<-data.frame(y1,y2,y3)

df2

创建以下数据框 -

       y1         y2          y3

1  -0.7446072   0.2772768  -0.2099932

2   0.4497256  -1.5064792  -0.7166337

3   0.8316262  -1.0904581   0.5837854

4  -0.2955840   1.8329734   1.9440828

5   1.4989187   0.7655811  -1.7222717

6   1.6513081  -1.4800745   0.9092251

7   0.7703807  -1.3972957  -0.6070779

8   0.8522162  -0.3482059  -0.7727520

9  -0.8581488   1.6068537  -2.3097855

10 -0.6890322   1.8891767  -1.3816252

11 -0.2896339   1.9209137   0.5935030

12 -0.9241086  -2.0833818   0.7365296

13 -1.1093938   1.4950127   1.5394590

14 -0.1203023  -0.7265817  -0.1850344

15 -0.1747876  -0.3429473   0.9155441

16  0.2678002  -0.4080068  -0.5372238

17  0.1292888   0.8621264  -1.0343519

18  1.0656223   0.3492514  -1.8643609

19 -1.0106256   0.3237296  -0.3930171

20  0.7498458  -0.1454423  -1.2903053

如果列值大于 5,为了在 df2 的每一列中找到频率,请将以下代码添加到上述代码段中 -

Columns2<-vector()

for(i in 1:ncol(df2)){

   + Columns2[i] <- length(df2[df2[,i]>0.5 ,i])

+ }

Columns2

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 7 7 7

以上是 如何根据R中的条件找到所有列的频率? 的全部内容, 来源链接: utcz.com/z/327408.html

回到顶部