【问题标题】:Remove duplicates within a string across one colum of a dataframe in R [duplicate]删除R中数据框一列的字符串中的重复项[重复]
【发布时间】:2022-01-19 19:15:19
【问题描述】:
col1 col2
First,First,Second row,First,First
Second,Second,Third row,Second,Second

我想将col1 转换成这个,而不删除col2 中的重复项,也不会创建新行

col1 col2
First,Second row,First,First
Second,Third row,Second,Second

如果分隔符是|| 而不是,,该怎么办?

【问题讨论】:

  • df$col1 <- gsub("\\,.*","",df$col1)
  • @Mael 可能不是骗子,因为 OP 要求删除重复项,而不仅仅是删除第一个逗号后的所有内容。
  • @Karlos 你能澄清一下你是想删除第一个逗号之后的所有内容,还是删除所有重复的值?
  • 分隔符不是逗号而是||我只想删除 col1 中的重复项
  • 我添加了2个链接,一个用于向量,一个用于数据帧,但解决思路是一样的:"split, unlist, uniq, paste"

标签: r


【解决方案1】:

使用tidyrdplyr 的一个选项

dat %>% separate_rows(col1) %>% distinct(col1, col2)
# A tibble: 2 × 2
  col1   col2             
  <chr>  <chr>            
1 First  row,First,First  
2 Second row,Second,Second

【讨论】:

  • 我不想创建新行。维护现有的。如果我们在 Col1 中有类似 c(First,First,Second) 和 c(Second,Second,Third) 的东西怎么办。数据框的行数会增加
  • @Karlos 你能更新你问题中的数据吗?我会更新我的答案。
  • 已更新,谢谢
【解决方案2】:

您可以用逗号分割第一列,以生成一个向量。然后,使用unique(),最后重新创建 CSV:

df$col1 <- paste(unique(strsplit(df$col1, ",")[[1]]), collapse=",")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 2021-05-14
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2021-05-30
    相关资源
    最近更新 更多