Wpis z mikrobloga

#programowanie #statistics

Mirki i Mirabelki, oto wizualizacja danych z ankiety zrobionej przez @Krugerz ()
Każdy może ją replikować u siebie po zainstalowaniu języka R.

Data scraping bezpośrednio z adresu URL ( ͡ ͜ʖ ͡)

Kod:

library(tidyverse)
library(reshape2)
library(viridis)
library(rvest)
library(plotly)

mirkoblog_url <- '[https://www.wykop.pl/wpis/30955941/udalo-mi-sie-juz-sporzadzic-wyniki-ankiety-%C2%BA-%CA%96-/'](https://www.wykop.pl/wpis/30955941/udalo-mi-sie-juz-sporzadzic-wyniki-ankiety-%C2%BA-%CA%96-/')

mirkoblog_subset <- sapply(mirkoblog_url, function(x) {x %>% read_html() %>% html_nodes("#itemsstream .text p") %>% html_text()})

mirkoblog_text <- mirkoblog_subset[1]
mirkoblog_text <- unlist(strsplit(mirkoblog_text, "*\n"))
mirkoblog_text <- mirkoblog_text[-c(1:30)]
mirkoblog_text <- mirkoblog_text[-83]

mirkoblog_text2 <- str_replace(mirkoblog_text, pattern = "^[0-9]+. ", replacement = "")

wypok1 <- rbind(
cbind(str_split_fixed(sort(mirkoblog_text2[2:19]), pattern = " - ", n = 2), "<18"),

cbind(str_split_fixed(sort(mirkoblog_text2[21:40]), pattern = " - ", n = 2), "18-24"),

cbind(str_split_fixed(sort(mirkoblog_text2[42:61]), pattern = " - ", n = 2), "25-40"),

cbind(str_split_fixed(sort(mirkoblog_text2[63:82]), pattern = " - ", n = 2), "40<")
)

wypok1[11,2] <- 7
wypok1 <- as.tibble(wypok1)
wypok1[,2] <- sapply(wypok1[,2], as.numeric)
colnames(wypok1) <- c("Religion", "Value", "Ages")
wypok1[,1]

wypok2 <- wypok1
wypok2[,1] <- str_replace_all(wypok1$Religion, pattern = "Bahaizm|Bia\U0142kizm|Latajacy potwór spagetti|Krugerz to ch\*j|pastarafanizm|Spirytyzm \(reinkarnacja\)|Satanizm|Krysznaizm Lucyferianizm|Kutasiaryzm|KAZ BALAGANE|Zoroastryzm|satanizm|Taka jak tego drzewa|korwinizm|\U017C*adnym|pastafarianizm|latajacy potwór spaghetti|Holograficzny \U015Bwiat|Asatru|Wykopizm xDDD|Jedi|Pastafarianizm|dyskordianizm|Hinduizm|Sikhizm|zadnym|latający potwór spaghetti|Lataj\U0105*cy potwór spagetti|lataj\U0105*cy potwór spaghetti|Wicca|KAZ BA\U0141*AGANE|Holograficzny świat|Holograficzny", replacement = "Other")
wypok2[,1] <- str_replace_all(wypok2$Religion, pattern = c("Apateizm"), replacement = c("Agnostisism"))
wypok2[,1] <- str_replace_all(wypok2$Religion, pattern = c("Ateizm"), replacement = c("Atheism"))
wypok2[,1] <- str_replace_all(wypok2$Religion, pattern = c("Agnostycyzm"), replacement = c("Agnostisism"))
wypok2[,1] <- str_replace_all(wypok2$Religion, pattern = c("Chrze\U015B*cija\U0144*stwo|Katolicyzm"), replacement = c("Christianity"))
wypok2[,1] <- str_replace_all(wypok2$Religion, pattern = c("Buddyzm"), replacement = c("Buddhism"))
wypok2[,1] <- str_replace_all(wypok2$Religion, pattern = c("Rodzimowierstwo|neopoga\U0144*stwo|Poga\U0144*stwo"), replacement = c("Neopaganism"))
wypok2[,1] <- str_replace_all(wypok2$Religion, pattern = c("Panteizm|Deizm"), replacement = c("Theism"))
wypok2[,1] <- str_replace_all(wypok2$Religion, pattern = c("Judaizm"), replacement = c("Judaism"))

wypok3 <- cbind(wypok2, as.vector(unlist(lapply(unique(wypok2$Ages), function(x) {
filter(wypok2, Ages == x)[2] * 100/sum(filter(wypok2, Ages == x)[2])
}))))

colnames(wypok3) <- c("Religion", "Value", "Ages", "Percent_in_age")

ggplot(wypok3, aes(x = Ages, y = Percent_in_age, fill = Religion)) +
geom_bar(stat = "identity") +
theme_minimal(base_size = 15, base_family = "") +
labs(x = "Age group", y = "Percent") +
ggtitle("Religion distribution on Wykop.pl (2018)", subtitle = "gathered by @Krugerz \nanalised by @Miii_Kiii") + scale_fill_viridis(alpha = 1, begin = 0, end = 1, discrete = T, option = "D")
MiiiKiii - #programowanie #statistics

Mirki i Mirabelki, oto wizualizacja danych z...

źródło: comment_X1q7ILhha3J33jnVqv0MoeCQp4ydMDFx.jpg

Pobierz
  • 50
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Miii_Kiii: Kod najlepiej daj na pastebin, bo mirko niszczy formatowanie. A t tak ciekawskim łatwiej go czytać z formatowaniem i kolorkami.
Co do wizualizacji... im starszy człowiek tym bardziej wierzący. Do przewidzenia ( ͡° ͜ʖ ͡°)
  • Odpowiedz