将数据框的一列拆分为两列,具有多个条件-R

时间:2016-03-07 20:43:37

标签: r

假设我有这样的数据帧(df):

header
---------
23.43
1,23
34.54
56.2
5,5

有些数字带点(。),有些带逗号(,)。

我想根据点和逗号将此列分成两列,分成新的数据帧(df2),如:

header1  header2
------- --------
23       43
1        23
34       54
56       2
5        5

如何使用R执行此操作?我会很高兴得到任何帮助。非常感谢。

非常感谢您的答案和时间。

如果分隔符包含多个字符,该怎么办?例如:

header
---------
23 ab 43
1 ca 23
34 ab 54
56 ca 2
5 ca 5

我们如何根据分隔符“ab”和“ca”将此数据帧拆分为两列?

1 个答案:

答案 0 :(得分:4)

基于@ alistaire的评论,您可以合并strsplit(拆分字符串),do.callrbind(绑定结果划线):

df <- data.frame(header=c("23.43", "1,23", "34.54", "56.2", "5,5"),
                 stringsAsFactors = FALSE)


r <- as.data.frame(do.call(rbind, strsplit(df$header, "[,.]")),
                   stringsAsFactors = FALSE)
colnames(r) <- c("header1", "header2")
r[] <- lapply(r, type.convert)
r
#   header1 header2
# 1      23      43
# 2       1      23
# 3      34      54
# 4      56       2
# 5       5       5