将strsplit应用于多列

时间:2018-12-12 14:40:32

标签: r

我想消除用逗号分隔的字符串中的重复项。

它适用于使用以下内容的单列:

df$column  <- sapply(strsplit(df$column, ",", fixed = TRUE), function(x) 
                                           paste(unique(x), collapse = ","))

当我尝试在多列上使用它时,总是会收到“参数是非字符”错误。

1 个答案:

答案 0 :(得分:1)

如果列为as.character,我们需要用factor换行

sapply(strsplit(as.character(df$column), ",", fixed = TRUE),
      function(x) paste(unique(x), collapse = ","))

要应用于多个列,请遍历感兴趣的列,请应用相同的函数,然后将输出更新到感兴趣的列

colsOfInterest <- c('column1', 'column2')
df[colsOfInterest] <- lapply(df[colsOfInterest], function(x) 
  sapply(strsplit(as.character(x), ",", fixed = TRUE),
       function(y) paste(unique(y), collapse=",")))