如何在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

更新於:2021年11月5日

397 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.