###############################################################################
###################### 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)