首页 > 解决方案 > 将单列分成 3 列,保留原始列 (R)

问题描述

我有一个独特的字符列,它位于“DD HH:MM”中,我试图将该列分成 3 个新的数字列。我对单独函数的问题是它替换了原始列,我不知道如何通过多个条件SEP =

观察样本

请注意,并非每个观察都有“DD”

我当前的代码如下所示:

separate(numeric_report,Planned.Duration..dd.hh.mm., into = c("Planned Days" ,"Planned Hours" , "Planned Minutes"),sep = ":")

任何建议将不胜感激!

标签: r

解决方案


您可以使用remove = FALSE来停止删除原始列,并且可以使用传递多个sep参数使用|.

tidyr::separate(data, Planned.Duration..dd.hh.mm., 
                 into = c("Planned Days" ,"Planned Hours" , "Planned Minutes"), 
                 sep = ":|\\s", remove = FALSE, fill = "left", convert = TRUE)


#      Planned.Duration..dd.hh.mm. Planned Days Planned Hours Planned Minutes
#1                        1:03           NA             1               3
#2                     2 00:38            2             0              38
#3                        0:49           NA             0              49

数据

data <- data.frame(Planned.Duration..dd.hh.mm. = 
         c('1:03', '2 00:38','0:49'), stringsAsFactors = FALSE)

推荐阅读