拆分列分隔符R.

use*_*622 0 split r delimiter

我有一个数据框如下.我想将最后一列拆分为2.拆分需要基于唯一的第一列完成:其余的列不重要.

在新数据框中,将有4列.第3列为(a,b,d),第4列为(1,2:3,3:4:4)

有什么建议?我的代码的第4行不起作用:(.我可以使用全新的解决方案或对第4行进行更正

employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(3, 2, 1)
df <- data.frame(employee, salary, originalColumn = c("a :1", "b :2:3", "d: 3:4:4"))

as.data.frame(do.call(rbind, strsplit(df,":")))
Run Code Online (Sandbox Code Playgroud)

-------------------- UPDATE1

以下解决方案效果很好 但我需要一个修改过的解决方案,因为我刚刚意识到第3列中的某些单元格不会有":".在这种情况下,我希望该单元格中的文本在拆分该列后仅出现在第一列中

employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(3, 2, 1)
df <- data.frame(employee, salary, originalColumn = c("a :1", "b", "d: 3:4:4"))
Run Code Online (Sandbox Code Playgroud)

Ric*_*ven 5

你可以用cSplit.在您更新的数据框中,

library(splitstackshape)
cSplit(df, "originalColumn", sep = ":{1}")
#      employee salary originalColumn_1 originalColumn_2
# 1:   John Doe      3                a                1
# 2: Peter Gynn      2                b               NA
# 3: Jolie Hope      1                d            3:4:4
Run Code Online (Sandbox Code Playgroud)

在原始数据框中,

df1 <- data.frame(employee, salary,   
                  originalColumn = c("a :1", "b :2:3", "d: 3:4:4"))
cSplit(df1, "originalColumn", sep = ":{1}")
#      employee salary originalColumn_1 originalColumn_2
# 1:   John Doe      3                a                1
# 2: Peter Gynn      2                b              2:3
# 3: Jolie Hope      1                d            3:4:4
Run Code Online (Sandbox Code Playgroud)

注意:我使用的是splitstackshape1.4.2版.我相信这个sep论点已经从版本1.4.0改变了