假设我有这样的数据帧(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”将此数据帧拆分为两列?
答案 0 :(得分:4)
基于@ alistaire的评论,您可以合并strsplit
(拆分字符串),do.call
和rbind
(绑定结果划线):
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