【发布时间】:2018-02-12 00:43:12
【问题描述】:
我正在使用 cSplit 将一列拆分为三个单独的列。分隔符是“/”
但是,我的一个字段嵌入了“/”分隔符。第三行的第三个元素应该是并且在拆分后保持为“f/j”。
当我在下面的示例中尝试它时,它会创建一个额外的(第四)列
name <- c("abc / efg / hij", "abc / abc / hij", "efg / efg / f/j", "abd / efj / hij")
y <- c(1,1.2,3.4, 5)
dt <- data.frame(name,y)
dt
dt <- cSplit(dt,"name","/", drop=FALSE)
dt
当我在包含超过 5,000 行的原始数据集中尝试它时,会产生以下错误:
fread(x, sep[i], header = FALSE) 中的错误:
期望 3 列,但是 第 2307 行包含处理所有列后的文本。再试一次 填充=真。另一个原因可能是 fread 的逻辑 区分一个或多个嵌入了 sep='/' 和/或 '\n' 的字段 不平衡的非转义引号中的字符失败。如果报价='' 没有帮助,请提出问题以确定逻辑是否可行 改进了。
【问题讨论】:
-
在您要拆分的
/周围使用额外的空白字符:cSplit(dt,"name"," / ", drop=FALSE)? -
对不起,我应该在我的原始帖子中包含这个。当我在我的数据集中尝试此操作时,我收到以下错误消息: fread(x, sep[i], header = FALSE) 中的错误:'sep' must be 'auto' or a single character
-
dt$name <- gsub("([^/]+)/([^/]+)/(.*)", "\\1_\\2_\\3", dt$name); cSplit(dt, "name", "_", drop=F)?这会将目标/字符替换为下划线,然后拆分这些下划线。 -
它有效,如果您发布您的答案,我可以将其投票为正确的。 TCS
标签: r splitstackshape csplit