以下问题:
我有一个包含多个条目的变量的数据框 data1:
data1 <- data.frame(v1 = c("test, test, bird", "bird, bird", "car"))
现在我想删除每行中重复的条目。结果应如下所示:
data1.final <- data.frame(v1 = c("test, bird", "bird", "car"))
我试过这个:
data1$ID <- 1:nrow(data1)
data1$v1 <- as.character(data1$v1)
data1 <- split(data1, data1$ID)
reduce.words <- function(x) {
d <- unlist(strsplit(x$v1, split=" "))
d <- paste(d[-which(duplicated(d))], collapse = ' ')
x$v1 <- d
return(x)
}
data1 <- lapply(data1, reduce.words)
data1 <- as.data.frame(do.call(rbind, data1))
但是,这会产生空行,除了第一行。任何人有解决这个问题的想法?
最佳答案
您的工作流程似乎相当复杂。只创建一个适用于行的简单函数怎么样
reduce_row = function(i) {
split = strsplit(i, split=", ")[[1]]
paste(unique(split), collapse = ", ")
}
然后使用apply
data1$v2 = apply(data1, 1, reduce_row)
得到
R> data1
v1 v2
1 test, test, bird test, bird
2 bird, bird bird
3 car car
关于删除一行中的重复字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27173948/