【问题标题】:Find all unique values in column separated by comma查找以逗号分隔的列中的所有唯一值
【发布时间】:2019-01-07 16:42:05
【问题描述】:

我用不同的观察者/观察者组对一个物种进行多次观察,并希望创建一个所有独特观察者的列表。我的数据如下所示:

data <- read.table(text="species observer
1 A,B
1 A,B
1 B,E
1 B,E
1 D,E,A,C,C
1 F"               , header = TRUE, stringsAsFactors = FALSE)

我的输出应该返回所有唯一观察者的列表 - 所以:

A,B,C,E,F

我尝试使用以下命令对列 C 中的数据进行子字符串化,但这仅返回观察者的唯一组合。

all_observers <- unique(strsplit(as.character(data$observer), ","))

all_observers
[[1]]
[1] "A" "B"

[[2]]
[1] "B" "E"

[[3]]
[1] "D" "E" "A" "C" "C"

[[4]]
[1] "F"

【问题讨论】:

  • 您需要先unlist,然后再执行unique。试试unique(unlist(strsplit(...)))
  • @Gregor 添加为答案?

标签: r strsplit


【解决方案1】:

你就快到了,你只需要在你做unique之前unlist

all_observers <- unique(unlist(strsplit(as.character(data$observer), ",")))

【讨论】:

    【解决方案2】:

    我们可以在'观察者'上使用separate_rows,得到distinct行,按'物种'分组,paste'观察者'

    library(tidyverse)
    data %>% 
       separate_rows(observer) %>% 
       distinct %>% 
       group_by(species) %>% 
       summarise(observer = toString(observer))
    

    【讨论】:

      【解决方案3】:

      你也可以使用scan()

      unique(scan(text=data$observer, what="", sep=","))
      # Read 14 items
      # [1] "A" "B" "E" "D" "C" "F"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-29
        相关资源
        最近更新 更多