【发布时间】:2015-04-27 10:49:17
【问题描述】:
我正在使用 RStudio 2.15.0,并使用 XLConnect 从 Excel 创建了一个对象,其中包含 3000 多行和 12 列我正在尝试将一列分隔/拆分为行,但不知道这是否可行或如何做。下面的数据示例使用连接的 3 列。对此的任何帮助都将是巨大的。
适用于其中 2 列的代码如下。
v1 <- with(df, tapply(PolId, Description, FUN= function(x) {
x1 <- paste(x, collapse=";")
gsub('(\\b\\S+\\b)(?=.*\\b\\1\\b.*);', '', x1, perl=TRUE)}))
library(stringr)
Description <- rep(names(v1), str_count(v1, '\\w+'))
PolId <- scan(text=gsub(';+', ' ', v1), what='', quiet=TRUE)
data.frame(PolId, Description)
样本数据
PolId Description Document.Type
ABC123;ABC456;ABC789; TEST1 Pol1
ABC123;ABC456;ABC789; TEST1 Pol1
ABC123;ABC456;ABC789; TEST1 Pol1
AAA123; TEST1 End1
AAA123; TEST2 End2
ABB123;ABC123; TEST3 End1
ABB123;ABC123; TEST3 End1
我希望输出是这样的(替换重复的 Polid)
PolId Description Document.Type
ABC123 TEST1 Pol1
ABC456 TEST1 Pol1
ABC789 TEST1 Pol1
AAA123 TEST1 End1
AAA123 TEST2 End2
ABB123 TEST3 End1
ABC123 TEST3 End1
【问题讨论】:
-
你看我的第二个解决方案了吗?它为您提供准确的输出,而无需修改它...
-
David 我在使用 cSplit 时收到以下错误。库(splitstackshape)唯一(cSplit(df,“PolId”,“;”,“long”))唯一错误(cSplit(df,“PolId”,“;”,“long”)):找不到函数“ cSplit"
-
重新安装包。你可能有一个旧版本