在R中如何将数据框内的字符串变量按下划线拆分为两个新变量
解法1:tidyr包实现(代码简洁易维护)
首先安装加载tidyr包,调用separate函数直接完成列拆分:
# 未安装包先执行 install.packages("tidyr") library(tidyr) # 你的原始数据 olddf <- data.frame('Z' = c('Z1','Z2','Z3'), 'var' = c('A_H','A_H', 'B_J')) # 拆分生成新数据框 newdf <- separate( data = olddf, col = var, # 要拆分的列 into = c("var1", "var2"), # 拆分后新列名 sep = "_" # 拆分分隔符 )
运行后得到的newdf和你给出的目标结构完全一致。
解法2:Base R原生实现(无需依赖第三方包)
如果不想安装额外包,用基础函数也能实现相同效果:
olddf <- data.frame('Z' = c('Z1','Z2','Z3'), 'var' = c('A_H','A_H', 'B_J')) # 拆分var列,转成数据框格式 split_res <- do.call(rbind, strsplit(olddf$var, split = "_")) colnames(split_res) <- c("var1", "var2") # 合并原有Z列和拆分结果,生成目标数据框 newdf <- cbind(olddf["Z"], split_res)
内容的提问来源于stack exchange,提问作者Expectation mean first moment
相关产品推荐
相关产品推荐

