R语言如何对数据框指定列字符串做首字母大写标准化
R指定列文本标准化实现方法
按照你给出的预期输出效果,只需要对a列做「全内容转小写后,字符串整体首字母大写」处理即可,c列不做任何操作就能保留原始内容,不需要额外安装第三方包,base R就能实现。
- 首先构造示例数据,注意低版本R(4.0之前)要加
stringsAsFactors = FALSE避免因子类型导致处理报错:
asd <- data.frame(a = c("test", "TEST", "new comment", "new Comment"), b = c(1,2, 3, 4), c = c("test", "TEST", "new comment", "new Comment"), stringsAsFactors = FALSE)
- 执行a列标准化处理:
# 先把a列所有内容统一转为全小写 a_lowcase <- tolower(asd$a) # 提取第一个字符转大写,拼接剩余的小写内容,替换原a列 asd$a <- paste0(toupper(substr(a_lowcase, 1, 1)), substr(a_lowcase, 2, nchar(a_lowcase)))
- 处理后输出结果完全匹配预期:
> asd a b c 1 Test 1 test 2 Test 2 TEST 3 New comment 3 new comment 4 New comment 4 new Comment
注:如果你实际需求是a列中每个空格分隔的单词都要首字母大写(即"new comment"转换为"New Comment"),可以用下面的自定义函数实现,该结果和你给出的示例预期有差异,按需选用:
cap_per_word <- function(text_col) { text_low <- tolower(text_col) sapply(strsplit(text_low, "\\s+"), function(txt_split) { paste( paste0(toupper(substr(txt_split, 1, 1)), substr(txt_split, 2, nchar(txt_split))), collapse = " " ) }) } # 调用方式:asd$a <- cap_per_word(asd$a)
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

