R语言:如何将数据框Category列拆分为性别与描述新列?
R语言拆分Category列的实现方法
先还原原始数据框:
Category <- c("Male children 0-15 years", "Female children 0-15 years", "Male Youths 18 years", "Female Youths 18 years") value <- c(12, 23, 33, 45) DF <- data.frame(Category, value)
这里提供两种常用的实现方式:
方式一:用tidyverse工具包快速拆分
借助tidyr里的separate函数,通过正则精准定位拆分位置,一步完成列拆分:
library(tidyverse) DF_new <- DF %>% separate(Category, into = c("gender", "new.column"), sep = "(?<=^\\w+) ", # 匹配第一个单词后的空格 extra = "merge") # 把剩余所有内容合并到new.column列 print(DF_new)
方式二:基础R原生实现
不用额外安装包,用strsplit配合sapply即可完成:
# 按第一个空格拆分,只拆成两部分 split_content <- strsplit(DF$Category, " ", fixed = TRUE, n = 2) # 提取拆分后的两部分,添加为新列 DF$gender <- sapply(split_content, function(x) x[1]) DF$new.column <- sapply(split_content, function(x) x[2]) # 调整列顺序和目标输出一致(可选) DF <- DF[, c("Category", "gender", "value", "new.column")] print(DF)
内容的提问来源于stack exchange,提问作者andrew
相关产品推荐
相关产品推荐

