查詢R資料框每一行中包含大於指定值的值的列名。


為了找到R資料框每一行中包含大於指定值的值的列名,我們可以使用apply函式和lapply函式。

例如,如果我們有一個名為df的資料框,並且我們希望提取每一行中值大於5的列名,那麼我們可以使用以下命令:

lapply(apply(df,1, function(x) which(x5)),names)

示例1

以下程式碼片段建立一個示例資料框:

x1<-rpois(20,5)
x2<-rpois(20,2)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
df1

建立了以下資料框

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

為了在上面建立的資料框的每一行中找到值大於1的列名,請將以下程式碼新增到上述程式碼片段中:

x1<-rpois(20,5)
x2<-rpois(20,2)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
lapply(apply(df1,1, function(x) which(x1)),names)

輸出

如果將以上所有程式碼片段作為一個程式執行,則會生成以下輸出:

[[1]]
[1] "x3"
[[2]]
[1] "x1" "x2" "x3"
[[3]]
[1] "x1" "x2"
[[4]]
[1] "x1" "x3"
[[5]]
[1] "x1" "x2" "x3"
[[6]]
[1] "x1" "x2" "x3"
[[7]]
[1] "x1" "x2"
[[8]]
[1] "x1" "x2"
[[9]]
[1] "x1" "x3"
[[10]]
[1] "x1" "x2" "x3"
[[11]]
[1] "x1"
[[12]]
[1] "x1" "x2"
[[13]]
[1] "x1" "x2"
[[14]]
[1] "x1"
[[15]]
[1] "x1" "x2"
[[16]]
[1] "x1" "x3"
[[17]]
[1] "x1"
[[18]]
[1] "x1"
[[19]]
[1] "x1" "x2"
[[20]]
[1] "x1" "x2"

示例2

以下程式碼片段建立一個示例資料框:

y1<-round(rnorm(20),1)
y2<-round(rnorm(20),1)
y3<-round(rnorm(20),1)
y4<-round(rnorm(20),1)
df2<-data.frame(y1,y2,y3,y4)
df2

建立了以下資料框

     y1   y2   y3   y4
 1 -1.3 -0.7 -0.8  0.1
 2 -0.2 -0.2  0.7 -0.7
 3 0.8  -0.5  0.2 -0.1
 4 -0.6  0.4  0.3 -0.8
 5 -0.3  1.3  0.4  1.3
 6 -0.3  1.0 -0.1 -1.2
 7 -0.2  0.6 -2.1  0.5
 8  1.0  1.4  0.2 -1.7
 9  1.1  0.4  0.6  1.2
10 -1.0 -0.8  1.7  0.2
11 -0.6 -1.0  0.1 -0.2
12  0.6  0.3  0.0 -0.2
13 -0.3  0.6 -0.4 -1.0
14  0.9  0.0 -0.3  1.7
15 -0.2  3.3  0.7 -0.7
16 -0.6  0.1 -0.7 -0.6
17 -0.2  0.7 -0.6  1.9
18  1.0 -0.5 -0.8  0.6
19 -0.9  0.1 -0.6 -0.5
20 -1.5 -1.0 -0.6  1.2

為了在上面建立的資料框的每一行中找到值大於0.5的列名,請將以下程式碼新增到上述程式碼片段中:

y1<-round(rnorm(20),1)
y2<-round(rnorm(20),1)
y3<-round(rnorm(20),1)
y4<-round(rnorm(20),1)
df2<-data.frame(y1,y2,y3,y4)
lapply(apply(df2,1, function(x) which(x0.5)),names)

輸出

如果將以上所有程式碼片段作為一個程式執行,則會生成以下輸出:

[[1]]
character(0)
[[2]]
[1] "y3"
[[3]]
[1] "y1"
[[4]]
character(0)
[[5]]
[1] "y2" "y4"
[[6]]
[1] "y2"
[[7]]
[1] "y2"
[[8]]
[1] "y1" "y2"
[[9]]
[1] "y1" "y3" "y4"
[[10]]
[1] "y3"
[[11]]
character(0)
[[12]]
[1] "y1"
[[13]]
[1] "y2"
[[14]]
[1] "y1" "y4"
[[15]]
[1] "y2" "y3"
[[16]]
character(0)
[[17]]
[1] "y2" "y4"
[[18]]
[1] "y1" "y4"
[[19]]
character(0)
[[20]]
[1] "y4"

更新於: 2021年11月9日

1K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.