【问题标题】:Filter out unique pairs in a dataframe R [duplicate]过滤掉数据帧R中的唯一对[重复]
【发布时间】:2020-07-16 17:15:04
【问题描述】:

我目前有一个名为国家/地区的数据框,有 2 列“V1”和“V2”。两列都包含国家/地区缩写,例如 US、CA、RU 等。每行是一对国家/地区,因此第一行可以是 US 和 RU。但是,我想提取唯一的对,因为有些对是重复的,例如 (US,RU) 和 (RU,US)。我想按字母顺序提取这对,因此 (RU,US) 将被提取,而不是 (US, RU)。

目前我有:

countries = filter(countries, countries$V1 < countries$V2)

但是,这会导致错误。

Error in UseMethod("filter_") : no applicable method for 'filter_' applied to an object of class "c('matrix', 'array', 'character')"

我假设我如何使用过滤器功能按字母顺序取出配对存在问题。有没有其他方法可以做到这一点?

【问题讨论】:

  • 国家需要是一个数据框。

标签: r filter unique


【解决方案1】:

这是一种带有一些示例数据的方法:

library(tidyverse)

countries <- data.frame(V1 = c("US", "MX", "CA", "UR", "US"),
                        V2 = c("MX", "FR", "IN", "US", "MX"),
                        Combo = NA)

for(i in 1:nrow(countries)){
      countries$Combo[i] <- paste0("(", 
                                   str_c(sort(c(countries$V1[i], countries$V2[i])),
                                         collapse = ", "),
                                   ")")
}

countries %>% pull(Combo) %>% unique()

【讨论】:

    【解决方案2】:

    你可以试试

    distinct_all(countries)
    

    【讨论】:

    • 我目前在尝试使用该功能时遇到此错误Error in UseMethod("tbl_vars") : no applicable method for 'tbl_vars' applied to an object of class "c('matrix', 'array', 'character')" 我的数据是否需要以某种方式进行转换?
    • 能否分享您数据集中的示例数据?
    • 我刚刚解决了这个问题,谢谢!
    猜你喜欢
    • 2012-08-01
    • 2011-08-28
    • 2019-01-12
    • 2019-08-08
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多