如何在 R 資料框中使用字元列中長度小於 3 的元素刪除行?


要查詢字元向量元素或 R 資料框中字元列的元素中的字元數,我們可以使用 nchar 函式。因此,如果我們想刪除元素大小小於 3 的行,我們需要使用相同的函式,然後使用子集函式刪除所需的行,如下面的示例所示。

示例 1

考慮以下資料框 -

線上演示

> x1<-sample(c("India","UK","China"),20,replace=TRUE)
> x2<-rpois(20,2)
> df1<-data.frame(x1,x2)
> df1

輸出

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

刪除 df1 中字元長度小於 3 的行 -

> subset(df1,nchar(as.character(df1$x1))>=3)

輸出

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

示例 2

線上演示

> y1<-sample(c("Yes","No"),20,replace=TRUE)
> y2<-rnorm(20)
> df2<-data.frame(y1,y2)
> df2

輸出

   y1     y2
1  No  -1.7364659
2  No   1.0939593
3  No  -0.3927835
4  No  -0.2663386
5  Yes  0.2212613
6  No  -0.4846801
7  No   2.5305836
8  No  -1.1580186
9  Yes  1.2991126
10 No  -0.2289025
11 No  -0.7304356
12 Yes  0.3648929
13 Yes -0.5454145
14 No   0.7025904
15 No  -0.1482001
16 No   0.3592025
17 Yes  1.7478691
18 No  -0.2124407
19 No   0.4227296
20 Yes -1.7340860

刪除 df2 中字元長度小於 3 的行 -

> subset(df2,nchar(as.character(df2$y1))>=3)

輸出

    y1     y2
5  Yes  0.2212613
9  Yes  1.2991126
12 Yes  0.3648929
13 Yes -0.5454145
17 Yes  1.7478691
20 Yes -1.7340860

示例 3

線上演示

> z1<-sample(c("Male","Female","NA"),20,replace=TRUE)
> z2<-runif(20,1,10)
> df3<-data.frame(z1,z2,z3)
> df3

輸出

    z1      z2       z3
1    Male 4.194956 2.037433
2    Male 5.223558 2.252606
3    Male 2.134314 2.126866
4  Female 8.728642 1.966581
5    Male 5.105030 1.871318
6  Female 8.249922 2.250764
7    NA   5.662960 1.882002
8    Male 6.712668 1.796225
9    NA   5.421763 2.404416
10 Female 5.588083 1.571489
11   NA   7.013066 2.419949
12 Female 2.863304 1.974340
13   Male 6.677141 1.877119
14 Female 6.357583 2.390536
15   Male 5.130621 1.688357
16   Male 2.709292 1.664844
17   Male 2.421428 2.060667
18 Female 2.900265 1.391200
19   NA   5.583389 1.757949
20 Female 3.149392 1.727739

刪除 df3 中字元長度小於 3 的行 -

> subset(df3,nchar(as.character(df3$z1))>=3)

輸出

     z1     z2      z3
1    Male 4.194956 2.037433
2    Male 5.223558 2.252606
3    Male 2.134314 2.126866
4  Female 8.728642 1.966581
5    Male 5.105030 1.871318
6  Female 8.249922 2.250764
8    Male 6.712668 1.796225
10 Female 5.588083 1.571489
12 Female 2.863304 1.974340
13   Male 6.677141 1.877119
14 Female 6.357583 2.390536
15   Male 5.130621 1.688357
16   Male 2.709292 1.664844
17   Male 2.421428 2.060667
18 Female 2.900265 1.391200
20 Female 3.149392 1.727739

更新於: 2021 年 3 月 5 日

460 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.