【问题标题】:list of unique value from two columns两列的唯一值列表
【发布时间】:2014-12-02 18:02:52
【问题描述】:

我想从两列创建唯一值列表。我使用网络分析数据集(无向图),我的数据集如下所示:

df <- data.frame(unit1_name = c("unit 1","unit 1", "unit 2"), 
             unit2_name = c("unit 2","unit 3","unit 3"))

所以我在每个元素(称为节点)之间拥有所有连接(称为边)。

结果我想得到一个列表:

unit 1
unit 2
unit 3

当然,我可以写很多代码行,但是否可以尽可能快地做到这一点?也许在 dplyr 包中?

【问题讨论】:

  • 你为什么不向我们展示你拥有的代码以及你不喜欢它的地方,然后我们可以提出改进建议。

标签: r unique dplyr


【解决方案1】:

一个简单的方法是:

unique(unlist(df))
#[1] unit 1 unit 2 unit 3
#Levels: unit 1 unit 2 unit 3

【讨论】:

  • 这是我所期望的!谢谢:)+10
【解决方案2】:

我真的很喜欢 R 中的 table 函数。您不仅可以获得唯一值,还可以获得每个值的频率。

> table(unlist(df))

unit 1 unit 2 unit 3 
     2      2      2

如果您只想访问table 对象中的唯一值而不是频率,您可以调用names

> names(table(unlist(df)))
[1] "unit 1" "unit 2" "unit 3"

绝对比纯unique有一些开销,这里我创建了一个大小为1000万的数字向量,这些是它们的性能比较。

> a <- sample(1:10, 1e7, replace=TRUE)
> system.time(unique(a))
   user  system elapsed 
  0.259   0.031   0.291 
> system.time(table(a))
   user  system elapsed 
  3.073   0.184   3.257

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2022-11-24
    • 2016-10-25
    • 2012-01-15
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多