2014-12-02 2 views
0

Я хочу создать список уникальных значений из двух столбцов. Я работаю с сетевого анализа набора данных (неориентированного графа) и мой набор данных выглядит следующим образом:список уникальных значений из двух столбцов

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?

+0

Почему бы вам не показать нам код, который у вас есть, и что вам не нравится в этом вопросе, а затем мы можем предложить улучшения. – chollida

ответ

2

Простой подход был бы:

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

Это то, что я ожидал! Спасибо:) + 10 – Nicolabo

0

мне очень нравится table функции в R. Вы можете не только получить уникальные значения, но и частоту для каждого значения.

> 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, здесь я создал числовой вектор размера 10million, это сравнение их производительность.

> 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