如何在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
为了查找df1中每列的频率(如果列值大于2),请将以下代码添加到上面的代码片段中:
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
为了查找df2中每列的频率(如果列值大于5),请将以下代码添加到上面的代码片段中:
Columns2<-vector() for(i in 1:ncol(df2)){ + Columns2[i] <- length(df2[df2[,i]>0.5 ,i]) + } Columns2
输出
如果您将以上所有代码片段作为单个程序执行,则会生成以下输出:
[1] 7 7 7
广告