如何根據小寫字母對 R 資料框進行子集化?


如果我們有一個數據框,其中包含一些小寫和一些大寫字串值,那麼我們可能希望根據小寫或大寫字母對資料框進行子集化。

為此,我們可以使用 apply 和 sapply 函式,如下面的示例所示。

示例 1

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

x1<-sample(c(letters[1:26],LETTERS[1:26]),20)
x2<-sample(c(letters[1:26],LETTERS[1:26]),20)
df1<-data.frame(x1,x2)
df1

建立了以下資料框 -

  x1 x2
1  w g
2  b l
3  J Z
4  c y
5  Q M
6  T J
7  Z i
8  s c
9  r j
10 E f
11 S N
12 x R
13 n Q
14 v V
15 N n
16 X P
17 p h
18 z I
19 l x
20 P O

要根據小寫字母對 df1 進行子集化,請將以下程式碼新增到上述程式碼片段中 -

x1<-sample(c(letters[1:26],LETTERS[1:26]),20)
x2<-sample(c(letters[1:26],LETTERS[1:26]),20)
df1<-data.frame(x1,x2)
df1[apply(df1==sapply(df1,tolower),1,any),]

輸出

如果您將以上所有給定的程式碼片段作為單個程式執行,則會生成以下輸出 -

   x1 x2
1  w  g
2  b  l
4  c  y
7  Z  i
8  s  c
9  r  j
10 E  f
12 x  R
13 n  Q
14 v  V
15 N  n
17 p  h
18 z  I
19 l  x

示例 2

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

y1<-sample(c(letters[1:4],LETTERS[1:4]),20,replace=TRUE)
y2<-sample(c(letters[1:4],LETTERS[1:4]),20,replace=TRUE)
df2<-data.frame(y1,y2)
df2

建立了以下資料框 -

   y1 y2
1  d  a
2  d  D
3  d  b
4  d  D
5  a  a
6  A  a
7  A  b
8  A  B
9  b  A
10 C  d
11 c  B
12 D  B
13 A  C
14 b  d
15 A  B
16 c  c
17 C  D
18 a  D
19 c  a
20 d  d

要根據小寫字母對 df2 進行子集化,請將以下程式碼新增到上述程式碼片段中 -

y1<-sample(c(letters[1:4],LETTERS[1:4]),20,replace=TRUE)
y2<-sample(c(letters[1:4],LETTERS[1:4]),20,replace=TRUE)
df2<-data.frame(y1,y2)
df2[apply(df2==sapply(df2,tolower),1,any),]

輸出

如果您將以上所有給定的程式碼片段作為單個程式執行,則會生成以下輸出 -

   y1 y2
1  d  a
2  d  D
3  d  b
4  d  D
5  a  a
6  A  a
7  A  b
9  b  A
10 C  d
11 c  B
14 b  d
16 c  c
18 a  D
19 c  a
20 d  d

更新時間: 2021年11月12日

196 次檢視

開啟你的 職業生涯

完成課程獲得認證

立即開始
廣告

© . All rights reserved.