如何在R语言中移除数据框内unite拼接后产生的空格
解决R语言unite拼接后出现空格的问题
方案1:拼接后直接清理空格
如果拼接后的字段里混着空格,用stringr::str_remove_all直接移除所有空白字符:
library(tidyr) library(stringr) # 替换成你的数据框和列名 df <- df %>% unite(拼接结果列名, 列1, 列2, sep = "", remove = FALSE) %>% mutate(拼接结果列名 = str_remove_all(拼接结果列名, "\\s"))
方案2:先清理原始列再拼接
空格大概率是原始列本身带的,先把要拼接的列里的空格清掉再用unite,从源头解决问题:
df <- df %>% # 批量清理指定列的空格 mutate(across(c(列1, 列2), ~str_remove_all(.x, "\\s"))) %>% unite(拼接结果列名, 列1, 列2, sep = "", remove = FALSE)
方案3:不用tidyverse的base R写法
如果习惯用base R,用gsub清理空格后再用paste拼接:
# 清理原始列的空格 df$列1 <- gsub("\\s", "", df$列1) df$列2 <- gsub("\\s", "", df$列2) # 拼接 df$拼接结果列名 <- paste(df$列1, df$列2, sep = "")
为什么之前用paste没成功?
paste只是按指定分隔符拼接字符串,不会自动移除每个字符串内部的空格。如果原始列本身带空格,直接用paste只会把带空格的内容拼在一起,得先单独清理每一列的空格,或者拼接后整体清理。
内容的提问来源于stack exchange,提问作者Luise
相关产品推荐
相关产品推荐

