如何移除DataFrame非首列的多余空格并转换为小写?
R语言处理非首列文本:去多余空格+转小写
先给出原始数据定义:
df <- data.frame(id = c("google", "Amazon"), text1 = c("Lee erke rle "," Elrl fe"), text2 = c(" Text e2 ","text Els "))
下面提供两种实用的实现方法:
方法一:Base R 原生实现
用lapply遍历除首列外的所有字段,组合三个函数完成需求:
tolower():将文本转为小写trimws():移除字符串首尾的空格gsub("\\s+", " ", ...):把字符串中间的多段连续空格替换成单个空格
代码如下:
# 处理第2列及之后的所有列 df[-1] <- lapply(df[-1], function(x) { tolower(trimws(gsub("\\s+", " ", x))) })
运行后输出结果与预期完全一致:
> df id text1 text2 1 google lee erke rle text e2 2 Amazon elrl fe text els
方法二:dplyr(tidyverse)实现
如果习惯用tidyverse风格的代码,用mutate()结合across()可以更直观地指定处理范围:
先确保已加载dplyr包:
library(dplyr)
然后执行清洗代码:
df_cleaned <- df %>% mutate(across(-id, ~ tolower(trimws(gsub("\\s+", " ", .)))))
该方法的输出效果和Base R实现完全相同。
内容的提问来源于stack exchange,提问作者Erik Brole
相关产品推荐
相关产品推荐

