如何在R中从含文件名的因子列拆分生成新增数据列?
在R语言中拆分文件名列生成多列数据
你需要从FileName列按下划线分隔拆分出Name、Day、Density三列,以下是两种高效可行的解决方案:
方法一:使用tidyverse工具包(推荐,代码简洁易读)
如果未安装tidyverse,先执行安装命令install.packages("tidyverse"),再运行以下代码:
library(tidyverse) # 原始数据 FileName <- c("123456_D1_5k", "123456_D1_10k", "123456_D2_5k", "123456_D2_10k", "987654_D1_5k", "987654_D1_10k", "987654_D2_5k", "987654_D2_10k") Value <- c("5", "9", "14", "15", "14", "21", "24", "16") df <- data.frame(FileName, Value) # 按下划线拆分FileName列,生成三列 df_new <- df %>% separate(FileName, into = c("Name", "Day", "Density"), sep = "_") # 查看结果 print(df_new)
方法二:使用base R(无需额外安装包)
完全依靠R基础包实现拆分,适合不想安装第三方包的场景:
# 原始数据 FileName <- c("123456_D1_5k", "123456_D1_10k", "123456_D2_5k", "123456_D2_10k", "987654_D1_5k", "987654_D1_10k", "987654_D2_5k", "987654_D2_10k") Value <- c("5", "9", "14", "15", "14", "21", "24", "16") df <- data.frame(FileName, Value) # 拆分每个文件名,转换为数据框 split_result <- do.call(rbind, strsplit(as.character(df$FileName), split = "_")) colnames(split_result) <- c("Name", "Day", "Density") # 合并拆分结果与原始Value列 df_new <- cbind(as.data.frame(split_result), Value = df$Value) # 查看结果 print(df_new)
额外提示
如果需要将Value列从字符型转为数值型,可执行:
df_new$Value <- as.numeric(df_new$Value)
内容的提问来源于stack exchange,提问作者perherring
相关产品推荐
相关产品推荐

