2017-01-30 14 views
1

У меня есть таблица с данными для сетевого графика. Таблица выглядит следующим образом:Как создать граф сети, который является частью случайной и произвольной части в R

df <- data.frame(ResponseID = 
    c('573829292', '638239391', '630719030', '632932937'), 
    know_anyone = c(9,16,12,32)) 

Как я может генерировать сетевой график, был каждый ResponseID является узлом случайным образом соединен с другими ResponseID, но и соединен в звезде манеры к ряду других узлов, представленных номера в столбце «know_anyone»?

+1

Просьба представить данные как текст в своем вопросе. Мы не можем вырезать и вставлять изображение. – G5W

+0

У меня проблемы с форматированием, но я буду пытаться форматировать данные, чтобы их можно было прочитать. –

+0

Итак, ваш окончательный график будет содержать эти четыре плюс дополнительные 9 + 16 + 12 + 32 узла? И мы можем предоставить эти дополнительные 69 уникальных идентификаторов узлов? – Spacedman

ответ

0

Сначала сделайте кадр данных, повторяя идентификатор know_anyone число раз с порядковым номером узла от 1 до N:

> dstars = data.frame(
    src=rep(df$ResponseID,df$know_anyone), 
    dst=paste0("N",1:(sum(df$know_anyone)))) 

Затем создать свой случайный граф однако. Я создам полный график для исходных узлов, получив все комбинации из двух чисел от 1 до M (M = 4 здесь). Rbind что, или ваш график из соединений между исходными узлами, к вышесказанному и сделать график:

> g = graph.data.frame(
     rbind(
     data.frame(
      src=df$ResponseID[combn(nrow(df),2[1,]], 
      dst=df$ResponseID[combn(nrow(df),2)[2,]] 
     ), 
     dstars) 
    ) 

Не использовать это для 1000 узлов, потому что это сделает график с полумиллионом краями - Я предполагаю, что ваш случайный график будет меньше (или у вас больше оперативной памяти, чем у меня!).

+0

Я получаю следующую ошибку от первого кода: Ошибка в rep (reg4 $ ResponseID, reg4 $ know_anyone): недействительных 'раз 'аргумент –

+0

Является ли ваш столбец 'reg4 $ know_anyone' числом, большим или равным нулю, и без отсутствующих значений« NA »? Что такое 'sum (is.na (reg4 $ know_anyone))'? – Spacedman

+1

Я понял это - в столбце отсутствовали значения. –