在R中使用separate_wider_delim时如何填充列编号为两位数
解决separate_wider_delim拆分列名两位数编号的问题
要实现拆分后的列名编号为两位数(如01、02),可以使用separate_wider_delim的names_glue参数自定义列名格式,结合stringr::str_pad函数对序号进行补零处理。
修改后的代码
library(tidyr) library(stringr) # 用于序号补零 # 数据集 df <- data.frame(Group = c("A","B","C"), fruits_selected = c( "'Apple'+'Banana'+'Cherry'", "'Peach'+'Banana'+'Apple'", "'Orange'+'Banana'+'Cherry'" ) ) # 拆分并生成两位数编号的列名 df2 <- df %>% separate_wider_delim(fruits_selected, delim = "+", names_glue = "{col}_{str_pad(i, 2, pad = '0')}") # 查看结果 print(df2)
输出结果
#> Group fruits_selected_01 fruits_selected_02 fruits_selected_03 #> <chr> <chr> <chr> <chr> #> 1 A 'Apple' 'Banana' 'Cherry' #> 2 B 'Peach' 'Banana' 'Apple' #> 3 C 'Orange' 'Banana' 'Cherry'
关键说明
names_glue参数通过模板字符串自定义拆分后的列名:{col}会被替换为原列名(此处为fruits_selected);{i}会被替换为拆分后的列序号(从1开始);str_pad(i, 2, pad = '0')将序号转换为两位数,不足两位时在前方补0。
内容的提问来源于stack exchange,提问作者BPL
相关产品推荐
相关产品推荐

