Соедините несколько хэштегов из одной строки друг с другом

У меня есть список из более чем 50 000 строк твитов. Теперь я уже экспортировал хэштеги из этого списка, но теперь я застрял с несколькими тысячами строк хэштегов, которые выглядят так

хэштег1;хэштег2;хэштег3;хэштег4

Поскольку я хочу провести совместный анализ хэштегов, я ищу способ связать эти несколько хэштегов друг с другом без необходимости вручную преобразовывать эти строки в ненаправленные края. Пример:

хэштег1;хэштег2
хэштег1;хэштег3
хэштег1;хэштег4
хэштег2;хэштег3
хэштег2;хэштег4
хэштег3;хэштег4

Итак, у вас есть идея, как выполнить эту задачу (например, с помощью R)? Я R-нуб и еще меньше «хорошо разбираюсь» в других языках, но я очень хочу учиться.

structure(list(V1 = structure(c(1L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 7L, 8L, 8L, 9L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 12L, 12L, 13L, 
13L, 13L, 13L, 14L, 14L), .Label = c("profitkapital", "resupply", 
"robotik", "rudidutschke", "russland", "sanktionen", "sanktionieren", 
"schiller", "siegertyp", "snowden", "sockeleinkommen", "solidarity", 
"sozialismus", "sozialphilosoph"), class = "factor"), V2 = structure(c(4L, 
3L, 2L, 7L, 7L, 7L, 7L, 17L, 6L, 8L, 9L, 10L, 10L, 11L, 12L, 
13L, 18L, 18L, 1L, 15L, 15L, 14L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 5L, 5L, 4L, 4L, 4L, 4L, 16L, 16L), .Label = c("alltag", 
"arbeit", "bbq", "bge", "blockupy", "deutschland", "digitalisierung", 
"griechenland", "grundeinkommen", "hartziv", "kenfm", "kirche", 
"kopf", "kraft", "marx", "negt", "piraten", "sanktion"), class = "factor"), 
    V3 = structure(c(1L, 3L, 2L, 4L, 4L, 4L, 4L, 4L, 5L, 4L, 
    4L, 4L, 13L, 10L, 13L, 4L, 14L, 14L, 7L, 6L, 6L, 15L, 8L, 
    8L, 8L, 8L, 8L, 8L, 8L, 1L, 1L, 1L, 1L, 12L, 12L, 11L, 11L, 
    11L, 11L, 9L, 9L), .Label = c("", "abitur", "bbqrub", "bge", 
    "brd", "brecht", "deutschen", "fsa", "grundeinkommen", "hartziv", 
    "linkezukunft", "ows", "vatikan", "widerspruch", "würde"
    ), class = "factor"), V4 = structure(c(1L, 3L, 6L, 1L, 1L, 
    1L, 1L, 1L, 8L, 1L, 2L, 1L, 9L, 5L, 9L, 10L, 4L, 4L, 7L, 
    3L, 3L, 11L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    12L, 12L, 1L, 1L, 1L, 1L, 3L, 3L), .Label = c("", "bank", 
    "bge", "eilantrag", "haarp", "job", "jobcentern", "merkel", 
    "pastor", "probleme", "super", "unibrennt"), class = "factor"), 
    V5 = structure(c(1L, 3L, 5L, 1L, 1L, 1L, 1L, 1L, 7L, 1L, 
    10L, 1L, 2L, 9L, 2L, 4L, 8L, 8L, 6L, 1L, 1L, 6L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 
    1L, 1L), .Label = c("", "bge", "bgenation", "fliegen", "geld", 
    "hartziv", "hitler", "sg", "ttip", "vorbild"), class = "factor"), 
    V6 = structure(c(1L, 5L, 2L, 1L, 1L, 1L, 1L, 1L, 6L, 1L, 
    1L, 1L, 8L, 4L, 8L, 7L, 4L, 4L, 4L, 1L, 1L, 4L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 
    1L), .Label = c("", "altersarmut", "antifa", "bge", "deeznuts", 
    "holocaust", "klatsch", "sex"), class = "factor"), V7 = structure(c(1L, 
    1L, 2L, 1L, 1L, 1L, 1L, 1L, 6L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 
    4L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 5L, 5L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "bge", 
    "cia", "hartz", "spanishrevolution", "wahre"), class = "factor"), 
    V8 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 
    1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 
    1L), .Label = c("", "cityoflondon", "grund", "peace"), class = "factor"), 
    V9 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 
    1L, 1L, 1L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 
    1L), .Label = c("", "bge", "occupy", "rothschild"), class = "factor"), 
    V10 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 
    1L), .Label = c("", "ard", "gezi"), class = "factor"), V11 = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "refugeeswelcome", 
    "zdf"), class = "factor"), V12 = structure(c(1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "nolegida", 
    "wdr"), class = "factor"), V13 = structure(c(1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "nopegida", 
    "swr"), class = "factor"), V14 = structure(c(1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "nocastor", 
    "zukunft"), class = "factor")), .Names = c("V1", "V2", "V3", 
"V4", "V5", "V6", "V7", "V8", "V9", "V10", "V11", "V12", "V13", 
"V14"), class = "data.frame", row.names = c(NA, -41L))


person quaak    schedule 20.04.2015    source источник


Ответы (1)


вы можете попробовать пакет combinat с combn, который сгенерирует пару перестановок

library(combinat)
combn(c("hashtag1", "hashtag2", "hashtag3", "hashtag4"), 2)
     [,1]       [,2]       [,3]       [,4]       [,5]       [,6]      
[1,] "hashtag1" "hashtag1" "hashtag1" "hashtag2" "hashtag2" "hashtag3"
[2,] "hashtag2" "hashtag3" "hashtag4" "hashtag3" "hashtag4" "hashtag4"
person Mamoun Benghezal    schedule 20.04.2015
comment
Привет, спасибо за ответ! :) Я попробовал ваше предложение и чувствую, что это правильный путь (каким-то образом). однако, если применить к моему файлу данных, я получаю одну таблицу с одним столбцом, и все содержимое NA. Затем я попытался поиграть с , 2) и заменил его на min или fun, но это не сработало, поскольку хэштеги не являются числовыми. есть ли у вас какие-либо дополнительные предложения? :) - person quaak; 20.04.2015
comment
можешь отредактировать свой пост и dput свои данные или хотя бы их часть? - person Mamoun Benghezal; 20.04.2015
comment
да, но я не вижу хэштегов в ваших данных? Так что я не уверен, что именно вы делаете с вашими данными? - person Mamoun Benghezal; 20.04.2015
comment
о, слова - это хэштеги, используемые в твиттере, я только что удалил знаки хэштегов :), и я хочу сделать совместный анализ хэштегов, который представляет собой сетевой анализ хэштегов (например, wiki.digitalmethods.net/Dmi/CoWordLifeline) - person quaak; 20.04.2015
comment
хорошо, предположим, что данные df, тогда попробуйте hashtag = unlist(apply(df, 1, unique)); hashtag2 <- unique(hashtag[hashtag != ""]); combn(hashtag2), если это то, что вы ищете. - person Mamoun Benghezal; 20.04.2015
comment
м-м, не получилось :/ спасибо за ваш вклад! однако сработало вот что: ndf<-data.frame() for(i in row.names(dba)){ vals <- dba[i,] ndf<- rbind(ndf,as.data.frame(t(combn(vals[vals!=""], 2)))) print(i) } - person quaak; 21.04.2015