R/Конверсия биграфа в монограф

Материал из Letopisi.Ru — «Время вернуться домой»
(Различия между версиями)
Перейти к: навигация, поиск
Строка 5: Строка 5:
 
# obebukhova Литература
 
# obebukhova Литература
 
# sch27@tagobr.ru    Литература
 
# sch27@tagobr.ru    Литература
 +
 +
=== Загружаем исходный файл и переводим ===
 +
 +
ghist <- read.csv(file.choose(),sep=",", as.is=T, header=T, encoding ="UTF-8") # чтобы сохранить русские значения
 +
ghist <- na.omit(ghist ) # если там были пропущенные значения, то удалим их
 +
 +
g2 <- data.frame(User = paste("U",ghist[,1],sep=":" ) , Page = paste("P",ghist[,2],sep=":") ) # если мы хотим добавим указания на страницы и участников
 +
g2 <- data.frame(User = ghist[,1] , Page = ghist[,2] ) # или
 +
 +
=== Превращение из биграфа в one-mode ===
 +
 +
A <- spMatrix(nrow=length(unique(g2$User)),
 +
              ncol=length(unique(g2$Page)),
 +
              i = as.numeric(factor(g2$User)),
 +
              j = as.numeric(factor(g2$Page)),
 +
              x = rep(1, length(as.numeric(g2$User))) )
 +
row.names(A) <- levels(factor(g2$User))
 +
colnames(A) <- levels(factor(g2$Page))
 +
Arow <- A %*% t(A)  ## Это у нас граф участников
 +
Acol <- t(A) %*% A ## А это у нас связи группы
 +
 +
=== Отдельно посмотрим на граф участников ===
 +
  
  

Версия 19:14, 13 марта 2016

Превращение биграфа в граф = история превращения графа, в котором есть и субъекты - person и объекты

Исходный пример - есть люди и есть группы, к которым они относятся

  1. obebukhova Литература
  2. sch27@tagobr.ru Литература

Загружаем исходный файл и переводим

ghist <- read.csv(file.choose(),sep=",", as.is=T, header=T, encoding ="UTF-8") # чтобы сохранить русские значения
ghist <- na.omit(ghist ) # если там были пропущенные значения, то удалим их
g2 <- data.frame(User = paste("U",ghist[,1],sep=":" ) , Page = paste("P",ghist[,2],sep=":") ) # если мы хотим добавим указания на страницы и участников
g2 <- data.frame(User = ghist[,1] , Page = ghist[,2] ) # или 

Превращение из биграфа в one-mode

A <- spMatrix(nrow=length(unique(g2$User)),
             ncol=length(unique(g2$Page)),
             i = as.numeric(factor(g2$User)),
             j = as.numeric(factor(g2$Page)),
             x = rep(1, length(as.numeric(g2$User))) )
row.names(A) <- levels(factor(g2$User))
colnames(A) <- levels(factor(g2$Page))
Arow <- A %*% t(A)  ## Это у нас граф участников
Acol <- t(A) %*% A ## А это у нас связи группы

Отдельно посмотрим на граф участников

library('Matrix')
A <- spMatrix(nrow=length(unique(df$person)),
       ncol=length(unique(df$group)),
       i = as.numeric(factor(df$person)),
       j = as.numeric(factor(df$group)),
       x = rep(1, length(as.numeric(df$person))) )
row.names(A) <- levels(factor(df$person))
colnames(A) <- levels(factor(df$group))
A
Arow <- A %*% t(A)  # users
Acol <- t(A) %*% A # pages

А дальше может работать отдельно с участниками и страницами и их связями

gn <- graph_from_adjacency_matrix(Arow,mode = c("directed"), weighted = NULL, diag = TRUE, add.colnames = NULL, add.rownames = NA) # получаем граф
gn <- simplify(gn) # Упрощаем граф


Ссылки:

Персональные инструменты
Инструменты