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 и объекты
Исходный пример - есть люди и есть группы, к которым они относятся
- obebukhova Литература
- 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) # Упрощаем граф
Ссылки:
- http://www.r-bloggers.com/working-with-bipartiteaffiliation-network-data-in-r/
- http://www.r-bloggers.com/working-with-bipartiteaffiliation-network-data-in-r/ - Working with Bipartite/Affiliation Network Data in R (Solomon)