如何根据小写字母对 R 数据框进行子集化?

r programmingserver side programmingprogramming更新于 2025/6/23 21:52:17

如果我们有一个包含一些小写字母和一些大写字母的字符串值的数据框,那么我们可能需要根据小写字母或大写字母对数据框进行子集化。

为此,我们可以使用 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

相关文章