如何根据小写字母对 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 次查看

开启你的 职业生涯

完成课程获得认证

立即开始
广告