如何替换 R 数据框中某列元素的字符串值中的空格?

r programmingserver side programmingprogramming更新于 2025/6/27 9:37:17

大多数情况下,字符串数据的格式不正确,我们需要对其进行适当处理,以便轻松进行分析。此外,还存在一种情况,即字符串列中的某些值使用了不必要的额外空格,因此与其他列值不匹配。要删除这些空格,我们可以使用 lapply 和 gsub 函数。

示例

考虑以下数据框 −

x1<-rep(c("A 1","A2","A 3","A4","A5"),times=4)
x2<-rep(c("#1","# 2","#3","#4"),each=5)
x3<-rep(c(5,7,8,12,15,18,22,24,31,39),times=2)
df<-data.frame(x1,x2,x3)
df
    x1 x2 x3
 1  A1 #1  5
 2  A2 #1  7
 3  A3 #1  8
 4  A4 #1 12
 5  A5 #1 15
 6  A1 #2 18
 7  A2 #2 22
 8  A3 #2 24
 9  A4 #2 31
10  A5 #2 39
11  A1 #3  5
12  A2 #3  7
13  A3 #3  8
14  A4 #3 12
15  A5 #3 15
16  A1 #4 18
17  A2 #4 22
18  A3 #4 24
19  A4 #4 31
20  A5 #4 39

仅替换第 2 列中的空格 −

df[-c(1,3)] <- lapply(df[-c(1,3)], gsub, pattern = " ", replacement = "", fixed = TRUE)
df
   x1 x2 x3
 1 A1 #1 5
 2 A2 #1 7
 3 A3 #1 8
 4 A4 #1 12
 5 A5 #1 15
 6 A1 #2 18
 7 A2 #2 22
 8 A3 #2 24
 9 A4 #2 31
10 A5 #2 39
11 A1 #3  5
12 A2 #3  7
13 A3 #3  8
14 A4 #3 12
15 A5 #3 15
16 A1 #4 18
17 A2 #4 22
18 A3 #4 24
19 A4 #4 31
20 A5 #4 39

替换所有列的空格 −

df[] <- lapply(df, gsub, pattern = " ", replacement = "", fixed = TRUE)
df
   x1 x2 x3
 1 A1 #1  5
 2 A2 #1  7
 3 A3 #1  8
 4 A4 #1 12
 5 A5 #1 15
 6 A1 #2 18
 7 A2 #2 22
 8 A3 #2 24
 9 A4 #2 31
10 A5 #2 39
11 A1 #3  5
12 A2 #3  7
13 A3 #3  8
14 A4 #3 12
15 A5 #3 15
16 A1 #4 18
17 A2 #4 22
18 A3 #4 24
19 A4 #4 31
20 A5 #4 39

相关文章