###############################################################################
###################### Aufbereitung der Content-Daten #########################
###############################################################################
# Dieses Skript bereitet die Kodierung der Kommentare auf. Als Ergebnis erhaelt
# man den Anteil positiver / negativer Kommentare pro SM-Plattform / pro News-
# Outlet oder pro beidem. Diese Mittelwerte werden dann im R-Skript
# Linkage_Auswertung.R weiterverwendet.
#------------------------------------------------------------------------------#
#--------------------- 1. Daten Einlesen und Aufbereiten ----------------------#
#------------------------------------------------------------------------------#
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
setwd("/Users/lunafrauhammer/Library/CloudStorage/OneDrive-UniversitaetDuisburg-Essen/Promotion/Projekte/DICINT/AP6/Auswertung/Auswertung_V1/ContentData")
doc <- grep("^Comments.*\\.csv$", list.files(), value = TRUE)
for(i in 1:3){
name <- paste("dat_content_", i, sep = "")
assign(name, read.csv(doc[i], header = TRUE, sep = ";")[, 1:20])
}
# die Dataframes dat_content_1, 2 und 3 enthalten die Kodierungen der drei Hiwis
dim(dat_content_1)
dim(dat_content_2)
dim(dat_content_3) # R3 hat ein Kommentar weniger als die anderen beiden
dat_content <- rbind(dat_content_1, dat_content_2, dat_content_3) # alle zusammen
nrow(dat_content)
dat_content <- dat_content[!is.na(dat_content$value_opinion_GerRuss),]
nrow(dat_content)
# es gibt ein paar Probleme mit NAs. Ich schliesse hier jetzt mal alle aus, evtl.
# muss man sich hier noch mehr Gedanken machen. Betrifft aber nur drei Zeilen.
# value_opinion enthaelt die Kodierung der Kommentare
table(dat_content$value_opinion_CovPol)
# value opinion umkodieren, sodass -1 = negativ, 0 = neutral, 1 = positiv
dat_content[dat_content$value_opinion_GerRuss == 2, ]$value_opinion_GerRuss <- -1
dat_content[dat_content$value_opinion_Impf == 2, ]$value_opinion_Impf <- -1
dat_content[dat_content$value_opinion_CovPol == 2, ]$value_opinion_CovPol <- -1
# Die Frage ist, ob man nur die Ratings zu den Kommentaren betrachten moechte, die
# auch entsprechend klassifiziert wurden oder die Ratings zu allen Kommentaren.
# Ich erzeuge hier jetzt eine neue Variable VO_XX, die nur die Ratings zu den
# entsprechend klassifizierten Kommentaren enthaelt und ansonsten NA ist.
# Die Variablen value_opinion_xxxxx enthaelt weiterhin alle Ratings.
dat_content$VO_CP <- NA
dat_content[dat_content$FI_CP == "WAHR", ]$VO_CP <- dat_content[dat_content$FI_CP == "WAHR", ]$value_opinion_CovPol
dat_content$VO_IP <- NA
dat_content[dat_content$FI_IP == "WAHR", ]$VO_IP <- dat_content[dat_content$FI_IP == "WAHR", ]$value_opinion_Impf
dat_content$VO_RU <- NA
dat_content[dat_content$FI_RU == "WAHR", ]$VO_RU <- dat_content[dat_content$FI_RU == "WAHR", ]$value_opinion_GerRuss
#------------------------------------------------------------------------------#
#------------------------------- 2. Deskreptiv -------------------------------#
#------------------------------------------------------------------------------#
# Neue Variable mit Kodierung als Faktor:
dat_content$value_opinion_CovPol_f <- as.factor(dat_content$value_opinion_CovPol)
dat_content$value_opinion_GerRuss_f <- as.factor(dat_content$value_opinion_GerRuss)
dat_content$value_opinion_Impf_f <- as.factor(dat_content$value_opinion_Impf)
su_CP <- summary(dat_content$value_opinion_CovPol_f)
su_RU <- summary(dat_content$value_opinion_GerRuss_f)
su_IP <- summary(dat_content$value_opinion_Impf_f)
sum <- t(data.frame("Corona Politik" = su_CP, "Beziehung Russland" = su_RU,
"Impfprivilegien" = su_IP))
colnames(sum) <- c("negativ (-1)", "other (0)", "positiv (+1)")
sum
# Diese Werte beziehen sich auf alle Kommentare. Im naechsten Schritt schaue ich
# mir nur die Kodierung fuer die entsprechend klassifizierten Variablen an:
su_CP_2 <- summary(dat_content[dat_content$FI_CP == "WAHR", ]$value_opinion_CovPol_f)
su_RU_2 <- summary(dat_content[dat_content$FI_RU == "WAHR", ]$value_opinion_GerRuss_f)
su_IP_2 <- summary(dat_content[dat_content$FI_IP == "WAHR", ]$value_opinion_Impf_f)
sum_2 <- t(data.frame("Corona Politik" = su_CP_2, "Beziehung Russland" = su_RU_2,
"Impfprivilegien" = su_IP_2))
colnames(sum_2) <- c("negativ (-1)", "other (0)", "positiv (+1)")
sum_2
# hier sind allerdings immer noch sehr oft Kommentare als 0 geratet.
dat_content$platform_f <- as.factor(dat_content$platform)
summary(dat_content$platform_f) # viel mehr FB als die restlichen?
dat_content$media_name_f <- as.factor(dat_content$media_name)
summary(dat_content$media_name_f)
### spezifisch fuer die einzelnen Plattformen: ###
dat_content_fb <- dat_content[dat_content$platform == "facebook", ]
dat_content_yt <- dat_content[dat_content$platform == "youtube", ]
dat_content_tw <- dat_content[dat_content$platform == "twitter", ]
table(dat_content_fb$value_opinion_CovPol)
table(dat_content_fb$value_opinion_Impf)
table(dat_content_fb$value_opinion_GerRuss)
table(dat_content_yt$value_opinion_CovPol)
table(dat_content_yt$value_opinion_Impf)
table(dat_content_yt$value_opinion_GerRuss)
table(dat_content_tw$value_opinion_CovPol)
table(dat_content_tw$value_opinion_Impf)
table(dat_content_tw$value_opinion_GerRuss)
#------------------------------------------------------------------------------#
#------------------------ 3. Zuordnung zu den Wellen -------------------------#
#------------------------------------------------------------------------------#
# SM 1: 01.01.2021 - 11.02.2021
# SM 2: 12.02.2021 - 25.03.2021
# SM 3: 26.03.2021 - 17.05.2021
dat_content$date <- as.Date(dat_content$created_at, format = "%d.%m.%y %H:%M")
dat_content$wave <- 0
dat_content[dat_content$date >= "2021-01-01" & dat_content$date <= "2021-02-11", ]$wave <- 1
dat_content[dat_content$date >= "2021-02-12" & dat_content$date <= "2021-03-25", ]$wave <- 2
dat_content[dat_content$date >= "2021-03-26" & dat_content$date <= "2021-05-17", ]$wave <- 3
dat_content$wave <- as.factor(dat_content$wave)
summary(dat_content$wave) # am meisten in der dritten Welle
### einzelne Dataframes pro Welle:
dat_content_W1 <- dat_content[dat_content$wave == 1, ]
dat_content_W2 <- dat_content[dat_content$wave == 2, ]
dat_content_W3 <- dat_content[dat_content$wave == 3, ]
#------------------------------------------------------------------------------#
#---------------- 4. Anteil positiver / negativer Kommentare ------------------#
#------------------------------------------------------------------------------#
content_list <- list(dat_content_W1, dat_content_W2, dat_content_W3)
for(wave in 1:3){
An_CP_SM <- aggregate(value_opinion_CovPol_f ~ platform_f, content_list[[wave]][content_list[[wave]]$FI_CP == "WAHR", ], table)
An_CP_SM[, -1] <- An_CP_SM[, -1] / rowSums(An_CP_SM[, -1])
assign(paste("An_CP0_SM", wave, sep = "_"), An_CP_SM)
}
An_CP0_SM <- list(An_CP0_SM_1, An_CP0_SM_2, An_CP0_SM_3)
# Die Dataframes An_CP0_SM_1, 2 und 3 enthalten jetzt die Anteile an positiven,
# negativen und neutralen Ratings pro SM Plattform fuer CP
# jetzt noch das gleiche fuer die anderen Themen:
for(wave in 1:3){
An_IP_SM <- aggregate(value_opinion_Impf_f ~ platform_f, content_list[[wave]][content_list[[wave]]$FI_IP == "WAHR", ], table)
An_IP_SM[, -1] <- An_IP_SM[, -1] / rowSums(An_IP_SM[, -1])
assign(paste("An_IP0_SM", wave, sep = "_"), An_IP_SM)
}
An_IP0_SM <- list(An_IP0_SM_1, An_IP0_SM_2, An_IP0_SM_3)
for(wave in 1:3){
An_RU_SM <- aggregate(value_opinion_GerRuss_f ~ platform_f, content_list[[wave]][content_list[[wave]]$FI_RU == "WAHR", ], table)
An_RU_SM[, -1] <- An_RU_SM[, -1] / rowSums(An_RU_SM[, -1])
assign(paste("An_RU0_SM", wave, sep = "_"), An_RU_SM)
}
An_RU0_SM <- list(An_RU0_SM_1, An_RU0_SM_2, An_RU0_SM_3)
##################### Das gleiche ohne 0 Kommentare ############################
content_list_CP <- list(dat_content_W1[dat_content_W1$value_opinion_CovPol != 0, ],
dat_content_W2[dat_content_W2$value_opinion_CovPol != 0, ],
dat_content_W3[dat_content_W3$value_opinion_CovPol != 0, ])
for(wave in 1:3){
An_CP_SM <- aggregate(value_opinion_CovPol_f ~ platform_f, content_list_CP[[wave]][content_list_CP[[wave]]$FI_CP == "WAHR", ], table)
An_CP_SM[, -1] <- An_CP_SM[, -1] / rowSums(An_CP_SM[, -1])
assign(paste("An_CP_SM", wave, sep = "_"), An_CP_SM)
}
An_CP_SM <- list(An_CP_SM_1, An_CP_SM_2, An_CP_SM_3)
content_list_IP <- list(dat_content_W1[dat_content_W1$value_opinion_Impf != 0, ],
dat_content_W2[dat_content_W2$value_opinion_Impf != 0, ],
dat_content_W3[dat_content_W3$value_opinion_Impf != 0, ])
for(wave in 1:3){
An_IP_SM <- aggregate(value_opinion_Impf_f ~ platform_f, content_list_IP[[wave]][content_list_IP[[wave]]$FI_IP == "WAHR", ], table)
An_IP_SM[, -1] <- An_IP_SM[, -1] / rowSums(An_IP_SM[, -1])
assign(paste("An_IP_SM", wave, sep = "_"), An_IP_SM)
}
An_IP_SM <- list(An_IP_SM_1, An_IP_SM_2, An_IP_SM_3)
content_list_RU <- list(dat_content_W1[dat_content_W1$value_opinion_GerRuss != 0, ],
dat_content_W2[dat_content_W2$value_opinion_GerRuss != 0, ],
dat_content_W3[dat_content_W3$value_opinion_GerRuss != 0, ])
for(wave in 1:3){
An_RU_SM <- aggregate(value_opinion_GerRuss_f ~ platform_f, content_list_RU[[wave]][content_list_RU[[wave]]$FI_RU == "WAHR", ], table)
An_RU_SM[, -1] <- An_RU_SM[, -1] / rowSums(An_RU_SM[, -1])
assign(paste("An_RU_SM", wave, sep = "_"), An_RU_SM)
}
An_RU_SM <- list(An_RU_SM_1, An_RU_SM_2, An_RU_SM_3)