【问题标题】:I am trying to lookup several unique names in 6 columns我正在尝试在 6 列中查找多个唯一名称
【发布时间】:2021-10-11 14:39:39
【问题描述】:

我正在尝试在数据框中查找多个名称。下面的示例“名称”将是 df。我很好奇为什么我不能得到整个集合的唯一数据。

unique(Names[1:3])
#Names is the df they are in, this has been giving me a table with all the names

unique(Names$colname)
#Has been working but this method won't filter out unique names for each column bc its diff commands

【问题讨论】:

  • 您好,欢迎您!将来,请使用dput() 提供可重现的数据样本,如Names。就目前而言,您需要获取 Names 数据框,它实际上是向量(列)的(命名)list,并且在使用 unique() 之前 unlist() 它:@ 987654329@。这会将所有目标数据合并到一个向量中,unique() 现在可以在该向量上进行操作。
  • @Greg 所以本质上,我需要将它从 df bc unique() 中取出,它不会为此工作,它需要一个向量。抱歉,我尝试使用三个刻度线,但我认为结果不正确。
  • 我的建议对你有用吗?即unique(unlist(Names[1:3])),或使用R 4.1 或更高版本中可用的本机|> 管道:Names[1:3] |> unlist() |> unique()

标签: r unique


【解决方案1】:

当您将unique() 应用于data.frame 时,返回的值将是 data.frame 包含数据框的所有唯一行。

dfa <- data.frame(a = c(1, 2, 3, 3), b = c(1, 1, 3, 3))
dfa
#>   a b
#> 1 1 1
#> 2 2 1
#> 3 3 3
#> 4 3 3

unique(dfa)
#>   a b
#> 1 1 1
#> 2 2 1
#> 3 3 3

在上面的示例中,unique() 将第 3 行和第 4 行检测为重复并减少 它们排成一排。

如果您有兴趣获取 a 的每一列的所有唯一值 data.frame 您必须将 unique() 专门应用于每一列。 lapply() 可以用于此。

lapply(dfa, unique)
#> $a
#> [1] 1 2 3
#> 
#> $b
#> [1] 1 3

如果您想查找唯一值并且您的数据分布在多个 您可以使用 unlist() 的列首先“展平”数据并应用唯一 之后。

dfa |> 
  unlist() |> 
  unique()
#> [1] 1 2 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多