diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5b6a065 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.Rproj.user +.Rhistory +.RData +.Ruserdata diff --git a/00-exploration.html b/00-exploration.html new file mode 100644 index 0000000..1719bf1 --- /dev/null +++ b/00-exploration.html @@ -0,0 +1,569 @@ + + + + + + + + + +Local-IT Bedarfsanalyse + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+

Local-IT Bedarfsanalyse

+
+ + + +
+ + + +
+ + +
+ +
+

Analyse

+
+ +Datenbereinigung + +
+
+Show the code +
# Datenbereinigung 
+library(tidyverse)
+library(janitor)
+survey_raw <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds"))
+
+
+
+
+Show the code +
survey <- survey_raw %>% 
+  mutate(
+    # G1Q06_SQ001 = ehrenamtlich engagiert fix missings
+    G1Q06_SQ001 = case_when(is.na(G1Q06_SQ001) & G1Q04 == "Keine" ~ "Ja",
+                            TRUE ~ as.character(G1Q06_SQ001)
+                            ),
+    # G1Q06_SQ002 = hauptamtlich engagiert fix missings
+    G1Q06_SQ002 = case_when(is.na(G1Q06_SQ002) & G1Q04 == "Keine" ~ "Nicht gewählt",
+                            TRUE ~ as.character(G1Q06_SQ002)
+                            ),
+    G1Q06_SQ001 = as_factor(G1Q06_SQ001),
+    G1Q06_SQ002 = as_factor(G1Q06_SQ002),
+    # generate one variable that combines the multiple choice information about the role of the respondent 
+    role_respondent = case_when(
+      # decision: Teilnehmende die beide Rollen angegeben haben werden zu hauptamtlich gezählt (es sind nur 6 und eine binary Variable ist besser geeignet für Gruppenvergleiche)
+      G1Q06_SQ001 == "Ja" & G1Q06_SQ002 == "Ja" ~ "ehrenamtlich", 
+      G1Q06_SQ001 == "Ja" ~ "ehrenamtlich",
+      G1Q06_SQ002 == "Ja" ~ "hauptamlich",
+      # decision: Teilnehmende die keine der Kategorien angegeben haben werden zu NA anstatt eine vierte Kategorie "keine" einzuführen, da das wahrcheinlich nicht von Interesse ist.
+      G1Q06_SQ001 == "Nicht gewählt" & G1Q06_SQ002 == "Nicht gewählt" ~ NA_character_,
+      is.na(G1Q06_SQ001) & is.na(G1Q06_SQ002) ~ NA_character_,
+      TRUE ~ "error")
+    )
+
+
+
+

G1Q06_SQ001 filter

+

Wir sind daran interessiert zu wissen, ob die Teilnehmenden selbst ehrenamtlich, hauptamtlich oder in beiden Positionen arbeiten. Diese Information findet sich in der Frage G1Q06: “Welche Rolle(n) haben sie in der Organisation. Die Filterführung des Fragebogens hat allerdings dazu geführt, dass Personen die angegeben haben, dass in ihrer Organisation keine hauptamtlichen Mitarbeiten vorhanden, sind die G1Q06 Frage nicht bekommen haben, da schon klar ist, dass sie dann ehrenamtlich sind. Dadurch haben sie momentan Missings auf den Variablen die zur G1Q06 Frage gehören. Die logische Verbindung zwischen G1Q04 und G1Q06 wollen wir also im Nachhinein recoden.

+
+
+Show the code +
survey_raw %>% tabyl(G1Q04, G1Q06_SQ001)
+
+
+
 G1Q04 Ja Nicht gewählt NA_
+ Keine  0             0  36
+   < 5 10            22   0
+  5-10  9            16   0
+ 11-50  2            29   0
+  > 50  5            21   0
+  <NA>  0             8  26
+
+
+Show the code +
#TODO wurde der Filter auch für G1Q05 gesetzt? Sieht nicht so aus ()
+survey_raw %>% tabyl(G1Q05, G1Q06_SQ002)
+
+
+
   G1Q05 Ja Nicht gewählt NA_
+   Keine  7             0   1
+     < 5  9             0   5
+  5 - 10 10             8  15
+ 11 - 50 26             4  10
+    > 50 41             8   5
+    <NA>  1             8  26
+
+
+

36 Personen haben angegeben, dass sich keine Hauptamtlichen in der Org. befinden -> die wollen wir recodieren

+
+
+Show the code +
survey %>% tabyl(G1Q06_SQ001, G1Q06_SQ002)
+
+
+
   G1Q06_SQ001 Ja Nicht gewählt NA_
+            Ja  6            56   0
+ Nicht gewählt 88             8   0
+          <NA>  0             0  26
+
+
+
+
+Show the code +
testthat::expect_equal(survey %>% filter(role_respondent == "error") %>% nrow(), 0)
+
+
+
+
+ +
+

Stichprobe

+
+
+Show the code +
# TODO: Analyse der Missings (wie weit sind Fragebögen ausgefuellt? schmeißen wir sie alle weg?)
+
+
+
+

Rolle der befragten Personen

+
+
+Show the code +
survey %>% count(role_respondent)
+
+
+
  role_respondent  n
+1    ehrenamtlich 62
+2     hauptamlich 88
+3            <NA> 34
+
+
+
+
+

Anzahl Hauptamtlicher und Ehrenamtlicher

+
+
+Show the code +
# facet wrap plot: beide Fragen haben die gleiche Skala
+tmp_long <- survey %>% 
+  select(id, G1Q05, G1Q04) %>% 
+  pivot_longer(-id, names_to = "var", values_to = "value")
+
+tmp_long %>% 
+  ggplot(aes(x = value)) +
+  geom_bar()+
+  facet_wrap(~var)+
+  labs(caption = "G1Q04 Anzahl Hauptamtlicher\nG1Q05 Anzahl Ehrenamtlicher", 
+       title = "Anzahl Hauptamtlicher (G1Q04) \n und Anzahl Ehrenamtlicher (G1Q05)")+
+  coord_flip()
+
+
+

+
+
+
+
+Show the code +
create_dot_plot <- function(data, x_var, y_var) {
+  tmp <- data %>% 
+    count({{ x_var }}, {{ y_var }}) %>% 
+    drop_na({{ x_var }}, {{ y_var }})
+  
+  x_var_pos <- which(attributes(survey)$names == enexpr(x_var))
+  x_var_lab <- attributes(survey)$variable.labels[x_var_pos] %>% 
+    str_replace(pattern = "\\?.+$", replacement = "?") 
+
+  y_var_pos <- which(attributes(survey)$names == enexpr(y_var))
+  y_var_lab <- attributes(survey)$variable.labels[y_var_pos] %>% 
+    str_replace(pattern = "\\?.+$", replacement = "?") 
+  
+  # plot
+  ggplot(tmp) +
+    aes(x = {{ x_var }},
+        y = {{ y_var }},
+        size = n,
+        label = n) +
+    geom_point() +
+    labs(caption = glue::glue("{enexpr(x_var)}: {x_var_lab} \n {enexpr(y_var)}: {y_var_lab}")) +
+    scale_fill_viridis_c() +
+    theme_minimal()
+}
+
+create_dot_plot(survey, G1Q04, G1Q05)
+
+
+

+
+
+
+
+
+

Hypothesen

+
    +
  1. Grundsätzlich
  2. +
+

Gibt es signifikante Zusammenhänge zwischen - G1Q04 Anzahl Hauptamtlicher - G1Q05 Anzahl Ehrenamtlicher - G5Q04 Bereich (Sport/ Bidung etc) Und allen anderen Fragen.

+
+
+Show the code +
tmp <- survey_raw %>% 
+  count(G1Q05, G1Q04) %>% 
+  drop_na(G1Q05, G1Q04)
+
+ggplot(tmp) +
+ aes(x = G1Q05, y = G1Q04, fill = n) +
+ geom_tile(size = 1.2) +
+labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + 
+  scale_fill_viridis_c()+
+ theme_minimal()
+
+
+

+
+
+
+
+Show the code +
ggplot(tmp) +
+ aes(x = G1Q05, y = G1Q04, size = n) +
+ geom_point() +
+labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + 
+  scale_fill_viridis_c()+
+ theme_minimal()
+
+
+

+
+
+Show the code +
p <- survey_raw %>%
+  count(G4Q02, G1Q04) %>%
+  drop_na() %>% 
+  ggplot() +
+  aes(x = G4Q02, y = G1Q04, size = n) +
+  geom_point() +
+  labs(y = "Anzahl Hauptamtlicher", x = "Nutzung") +
+  coord_flip()+
+  theme_light() 
+p
+
+
+

+
+
+
+
+Show the code +
survey_raw %>% 
+  select(G4Q02, G1Q04) %>% 
+  drop_na() %>% 
+  janitor::tabyl(G4Q02, G1Q04) %>% 
+  janitor::adorn_totals() %>% 
+  janitor::adorn_percentages() %>% 
+  janitor::adorn_pct_formatting()
+
+
+
                                               G4Q02 Keine   < 5  5-10 11-50
+          nutzen wir in unserer Organisation aktuell 40.5% 21.4% 11.9% 11.9%
+              haben wir mal genutzt oder ausprobiert 25.0% 18.8% 18.8% 31.2%
+            nutzen wir nicht in unserer Organisation 15.8% 28.9% 21.1% 18.4%
+ ich weiß nicht ob wir sie nutzen oder genutzt haben  6.2% 18.8%  6.2% 37.5%
+                         ich kenne den Begriff nicht  0.0% 33.3% 33.3% 33.3%
+                                               Total 24.3% 23.5% 15.7% 20.9%
+  > 50
+ 14.3%
+  6.2%
+ 15.8%
+ 31.2%
+  0.0%
+ 15.7%
+
+
+

Erklärungsansaetze für Ergebnisse: - Sampling Bias in der Umfrage -

+
+

Anzahl ehrenamtliche

+
+
+Show the code +
survey_raw %>%
+  count(G4Q02) %>%
+  drop_na() %>% 
+  ggplot(aes(x = G4Q02, y = n))+
+  geom_col()+
+  coord_flip()
+
+
+

+
+
+Show the code +
survey_raw %>%
+  count(G4Q02, G1Q05) %>%
+  drop_na() %>% 
+  ggplot() +
+  aes(x = G4Q02, y = G1Q05, size = n) +
+  geom_point() +
+  labs(y = "Anzahl Ehrenamtlicher", x = "Nutzung") +
+  coord_flip()+
+  theme_minimal()
+
+
+

+
+
+Show the code +
survey_raw %>% 
+  select(G4Q02, G1Q05) %>% 
+  drop_na() %>% 
+  janitor::tabyl(G4Q02, G1Q05) %>% 
+  janitor::adorn_totals() %>% 
+  janitor::adorn_percentages(denominator = "col") %>% 
+  janitor::adorn_pct_formatting()
+
+
+
                                               G4Q02  Keine    < 5 5 - 10
+          nutzen wir in unserer Organisation aktuell  33.3%  45.5%  37.0%
+              haben wir mal genutzt oder ausprobiert   0.0%   0.0%  11.1%
+            nutzen wir nicht in unserer Organisation  50.0%  36.4%  44.4%
+ ich weiß nicht ob wir sie nutzen oder genutzt haben  16.7%  18.2%   7.4%
+                         ich kenne den Begriff nicht   0.0%   0.0%   0.0%
+                                               Total 100.0% 100.0% 100.0%
+ 11 - 50   > 50
+   40.7%  30.2%
+   22.2%  16.3%
+   25.9%  27.9%
+    7.4%  20.9%
+    3.7%   4.7%
+  100.0% 100.0%
+
+
+

Chi-Square Test, um zu sehen, ob zw. den zwei kategorialen Variablen ein signifikanter Zusammenhang besteht:

+
+
+Show the code +
chisq.test(survey$G4Q02, survey$G1Q05)
+
+
+
Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
+incorrect
+
+
+

+    Pearson's Chi-squared test
+
+data:  survey$G4Q02 and survey$G1Q05
+X-squared = 12.462, df = 16, p-value = 0.7116
+
+
+

Werden Cluster sichtbar?

+
    +
  1. Für welche Organisationen ist SKA interessant? Hypothesen:
  2. +
  3. Große Organisationen mit vielen Hauptamtlichen und eigenen IT Abteilungen haben kein Interessen an Open Source Lösungen sondern entscheiden sich für bekannte, teure propritäre Tools
  4. +
  5. Organisationen mit eigenen IT Abteilungen haben Wissen und Kompetenz selbst Open Source Lösungen aufzusetzen (also Zugang) und nutzen sie somit häufiger.
  6. +
+

G2Q02 Wer kümmert sich um eure digitale Infrastruktur G1Q04 Wie viele hauptamtlich Mitarbeitende hat deine Organisation? In Korrelation zu Bisherige Erfahrung mit Open Source (G4Q02) oder der Wichtigkeit bestimmter Eigenschaften des Tools (G03Q03 und G03Q03b)

+
+
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/00-exploration.qmd b/00-exploration.qmd new file mode 100644 index 0000000..668750e --- /dev/null +++ b/00-exploration.qmd @@ -0,0 +1,237 @@ +--- +title: "Local-IT Bedarfsanalyse" +format: + html: + code-fold: true + code-summary: "Show the code" +--- +# Analyse +
+Datenbereinigung +```{r import data, message=FALSE} +# Datenbereinigung +library(tidyverse) +library(janitor) +survey_raw <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds")) +``` + +```{r wrangle data} +survey <- survey_raw %>% + mutate( + # G1Q06_SQ001 = ehrenamtlich engagiert fix missings + G1Q06_SQ001 = case_when(is.na(G1Q06_SQ001) & G1Q04 == "Keine" ~ "Ja", + TRUE ~ as.character(G1Q06_SQ001) + ), + # G1Q06_SQ002 = hauptamtlich engagiert fix missings + G1Q06_SQ002 = case_when(is.na(G1Q06_SQ002) & G1Q04 == "Keine" ~ "Nicht gewählt", + TRUE ~ as.character(G1Q06_SQ002) + ), + G1Q06_SQ001 = as_factor(G1Q06_SQ001), + G1Q06_SQ002 = as_factor(G1Q06_SQ002), + # generate one variable that combines the multiple choice information about the role of the respondent + role_respondent = case_when( + # decision: Teilnehmende die beide Rollen angegeben haben werden zu hauptamtlich gezählt (es sind nur 6 und eine binary Variable ist besser geeignet für Gruppenvergleiche) + G1Q06_SQ001 == "Ja" & G1Q06_SQ002 == "Ja" ~ "ehrenamtlich", + G1Q06_SQ001 == "Ja" ~ "ehrenamtlich", + G1Q06_SQ002 == "Ja" ~ "hauptamlich", + # decision: Teilnehmende die keine der Kategorien angegeben haben werden zu NA anstatt eine vierte Kategorie "keine" einzuführen, da das wahrcheinlich nicht von Interesse ist. + G1Q06_SQ001 == "Nicht gewählt" & G1Q06_SQ002 == "Nicht gewählt" ~ NA_character_, + is.na(G1Q06_SQ001) & is.na(G1Q06_SQ002) ~ NA_character_, + TRUE ~ "error") + ) +``` + + +## G1Q06_SQ001 filter + +Wir sind daran interessiert zu wissen, ob die Teilnehmenden selbst ehrenamtlich, hauptamtlich oder in beiden Positionen arbeiten. Diese Information findet sich in der Frage `G1Q06`: "Welche Rolle(n) haben sie in der Organisation. Die Filterführung des Fragebogens hat allerdings dazu geführt, dass Personen die angegeben haben, dass in ihrer Organisation keine hauptamtlichen Mitarbeiten vorhanden, sind die `G1Q06` Frage nicht bekommen haben, da schon klar ist, dass sie dann ehrenamtlich sind. Dadurch haben sie momentan Missings auf den Variablen die zur `G1Q06` Frage gehören. Die logische Verbindung zwischen `G1Q04` und `G1Q06` wollen wir also im Nachhinein recoden. + +```{r explore G1Q06_SQ001 filter, inlcude = FALSE} +survey_raw %>% tabyl(G1Q04, G1Q06_SQ001) +#TODO wurde der Filter auch für G1Q05 gesetzt? Sieht nicht so aus () +survey_raw %>% tabyl(G1Q05, G1Q06_SQ002) +``` + +36 Personen haben angegeben, dass sich keine Hauptamtlichen in der Org. befinden -> die wollen wir recodieren + +```{r} +survey %>% tabyl(G1Q06_SQ001, G1Q06_SQ002) +``` + +```{r} +testthat::expect_equal(survey %>% filter(role_respondent == "error") %>% nrow(), 0) +``` +
+ +# Stichprobe +```{r} +# TODO: Analyse der Missings (wie weit sind Fragebögen ausgefuellt? schmeißen wir sie alle weg?) +``` + +## Rolle der befragten Personen +```{r} +survey %>% count(role_respondent) +``` + + +## Anzahl Hauptamtlicher und Ehrenamtlicher +```{r} +# facet wrap plot: beide Fragen haben die gleiche Skala +tmp_long <- survey %>% + select(id, G1Q05, G1Q04) %>% + pivot_longer(-id, names_to = "var", values_to = "value") + +tmp_long %>% + ggplot(aes(x = value)) + + geom_bar()+ + facet_wrap(~var)+ + labs(caption = "G1Q04 Anzahl Hauptamtlicher\nG1Q05 Anzahl Ehrenamtlicher", + title = "Anzahl Hauptamtlicher (G1Q04) \n und Anzahl Ehrenamtlicher (G1Q05)")+ + coord_flip() +``` + + +```{r} +create_dot_plot <- function(data, x_var, y_var) { + tmp <- data %>% + count({{ x_var }}, {{ y_var }}) %>% + drop_na({{ x_var }}, {{ y_var }}) + + x_var_pos <- which(attributes(survey)$names == enexpr(x_var)) + x_var_lab <- attributes(survey)$variable.labels[x_var_pos] %>% + str_replace(pattern = "\\?.+$", replacement = "?") + + y_var_pos <- which(attributes(survey)$names == enexpr(y_var)) + y_var_lab <- attributes(survey)$variable.labels[y_var_pos] %>% + str_replace(pattern = "\\?.+$", replacement = "?") + + # plot + ggplot(tmp) + + aes(x = {{ x_var }}, + y = {{ y_var }}, + size = n, + label = n) + + geom_point() + + labs(caption = glue::glue("{enexpr(x_var)}: {x_var_lab} \n {enexpr(y_var)}: {y_var_lab}")) + + scale_fill_viridis_c() + + theme_minimal() +} + +create_dot_plot(survey, G1Q04, G1Q05) + + +``` + + + +# Hypothesen + +1. Grundsätzlich + +Gibt es signifikante Zusammenhänge zwischen +- G1Q04 Anzahl Hauptamtlicher +- G1Q05 Anzahl Ehrenamtlicher +- G5Q04 Bereich (Sport/ Bidung etc) +Und allen anderen Fragen. + + +```{r} +tmp <- survey_raw %>% + count(G1Q05, G1Q04) %>% + drop_na(G1Q05, G1Q04) + +ggplot(tmp) + + aes(x = G1Q05, y = G1Q04, fill = n) + + geom_tile(size = 1.2) + +labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + + scale_fill_viridis_c()+ + theme_minimal() +``` + +```{r} +ggplot(tmp) + + aes(x = G1Q05, y = G1Q04, size = n) + + geom_point() + +labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + + scale_fill_viridis_c()+ + theme_minimal() + + +p <- survey_raw %>% + count(G4Q02, G1Q04) %>% + drop_na() %>% + ggplot() + + aes(x = G4Q02, y = G1Q04, size = n) + + geom_point() + + labs(y = "Anzahl Hauptamtlicher", x = "Nutzung") + + coord_flip()+ + theme_light() +p +``` + + +```{r} +survey_raw %>% + select(G4Q02, G1Q04) %>% + drop_na() %>% + janitor::tabyl(G4Q02, G1Q04) %>% + janitor::adorn_totals() %>% + janitor::adorn_percentages() %>% + janitor::adorn_pct_formatting() +``` + + +Erklärungsansaetze für Ergebnisse: +- Sampling Bias in der Umfrage +- + +## Anzahl ehrenamtliche +```{r} + +survey_raw %>% + count(G4Q02) %>% + drop_na() %>% + ggplot(aes(x = G4Q02, y = n))+ + geom_col()+ + coord_flip() + + +survey_raw %>% + count(G4Q02, G1Q05) %>% + drop_na() %>% + ggplot() + + aes(x = G4Q02, y = G1Q05, size = n) + + geom_point() + + labs(y = "Anzahl Ehrenamtlicher", x = "Nutzung") + + coord_flip()+ + theme_minimal() + + +survey_raw %>% + select(G4Q02, G1Q05) %>% + drop_na() %>% + janitor::tabyl(G4Q02, G1Q05) %>% + janitor::adorn_totals() %>% + janitor::adorn_percentages(denominator = "col") %>% + janitor::adorn_pct_formatting() +``` + +Chi-Square Test, um zu sehen, ob zw. den zwei kategorialen Variablen ein signifikanter Zusammenhang besteht: + +```{r} +chisq.test(survey$G4Q02, survey$G1Q05) +``` + +Werden Cluster sichtbar? + + + +2. Für welche Organisationen ist SKA interessant? +Hypothesen: +1. Große Organisationen mit vielen Hauptamtlichen und eigenen IT Abteilungen haben kein Interessen an Open Source Lösungen sondern entscheiden sich für bekannte, teure propritäre Tools +2. Organisationen mit eigenen IT Abteilungen haben Wissen und Kompetenz selbst Open Source Lösungen aufzusetzen (also Zugang) und nutzen sie somit häufiger. + +G2Q02 Wer kümmert sich um eure digitale Infrastruktur +G1Q04 Wie viele hauptamtlich Mitarbeitende hat deine Organisation? +In Korrelation zu +Bisherige Erfahrung mit Open Source (G4Q02) oder der Wichtigkeit bestimmter Eigenschaften des Tools (G03Q03 und G03Q03b) diff --git a/01-quarto-interactive.html b/01-quarto-interactive.html new file mode 100644 index 0000000..0a13431 --- /dev/null +++ b/01-quarto-interactive.html @@ -0,0 +1,343 @@ + + + + + + + + + +Untitled + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+

Untitled

+
+ + + +
+ + + +
+ + +
+ +
+

R: Import Data

+
+
library(tidyverse)
+# install.packages("here)
+
+
+
data <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds"))
+
+
+

R: Transpose Data for OJS

+
+
data_ojs <- data %>% transpose()
+
+
+
+
+

Exploration

+
+

R: Expose Data to JS

+
+
ojs_define(data = data_ojs)
+ojs_define(varnames = names(data))
+ojs_define(qlabels = attributes(data)$variable.labels)
+
+
+
+
+

R + OJS: Interaction

+
+

OJS: Dropdown

+
+
viewof varname_selected = Inputs.select(varnames,
+  {label: "Filter nach:"}
+)
+
+
+ +
+
+
+
+
viewof filter_val = Inputs.select(varnames,
+  {label: "Filter nach:"}
+)
+
+
+ +
+
+
+
+
+

OJS: Table

+
+
viewof tableData = Inputs.table(
+  data,
+    {
+      sort: varname_selected, required: false
+    }
+)
+
+
+ +
+
+
+
+
+

MAIN: Dynamic ggplot

+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+ +
+ + + + + +
+ + + + \ No newline at end of file diff --git a/01-quarto-interactive.qmd b/01-quarto-interactive.qmd new file mode 100644 index 0000000..2d9ab47 --- /dev/null +++ b/01-quarto-interactive.qmd @@ -0,0 +1,99 @@ +--- +title: "Untitled" +format: html +--- + +# R: Import Data + +```{r warning=FALSE, message=FALSE} +library(tidyverse) +# install.packages("here) + +``` + +```{r} +data <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds")) +``` + +```{r include=FALSE} +head(data) +``` +## R: Transpose Data for OJS + +```{r} +data_ojs <- data %>% transpose() +``` + +# Exploration + +## R: Expose Data to JS + +```{r} +ojs_define(data = data_ojs) +ojs_define(varnames = names(data)) +ojs_define(qlabels = attributes(data)$variable.labels) +``` + +# R + OJS: Interaction + +## OJS: Dropdown + +```{ojs} +viewof varname_selected = Inputs.select(varnames, + {label: "Filter nach:"} +) +``` + +```{ojs} +viewof filter_val = Inputs.select(varnames, + {label: "Filter nach:"} +) +``` + +## OJS: Table + +```{ojs} +viewof tableData = Inputs.table( + data, + { + sort: varname_selected, required: false + } +) +``` + +## MAIN: Dynamic ggplot + +```{ojs} +//| echo: false +viewof var_x = Inputs.select(varnames, + {label: "X Variable"} +) +``` + + +```{ojs} +//| echo: false +viewof var_y = Inputs.select(varnames, + {label: "Y Variable"} +) +``` + +```{ojs} +//| echo: false +chart = Plot.plot({ + inset: 8, + grid: true, + marks: [ + Plot.dot(data, + Plot.group({r: "count", fill: "count"}, {x: var_x, y: var_y}) + ) + ], + color: { + type: "linear", + range: ["steelblue", "orange"] // uses d3.interpolateRgb + }, + r: { + range: [0, 20] + }, +}) +``` diff --git a/bedarfsanalyse.Rproj b/bedarfsanalyse.Rproj new file mode 100644 index 0000000..8e3c2eb --- /dev/null +++ b/bedarfsanalyse.Rproj @@ -0,0 +1,13 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX diff --git a/data/processed/survey_with_labels.rds b/data/processed/survey_with_labels.rds new file mode 100644 index 0000000..fb9d1ad Binary files /dev/null and b/data/processed/survey_with_labels.rds differ diff --git a/limesurvey_survey_227824.txt b/data/raw/limesurvey_survey_227824.txt similarity index 78% rename from limesurvey_survey_227824.txt rename to data/raw/limesurvey_survey_227824.txt index f92189c..66d70f9 100644 --- a/limesurvey_survey_227824.txt +++ b/data/raw/limesurvey_survey_227824.txt @@ -1,78 +1,5 @@ id related_id class type/scale name relevance text help language validation mandatory encrypted other default same_default allowed_filetypes alphasort answer_width answer_width_bycolumn array_filter array_filter_exclude array_filter_style assessment_value category_separator choice_input_columns choice_title commented_checkbox commented_checkbox_auto cssclass date_format date_max date_min display_columns display_rows display_type dropdown_dates dropdown_dates_minute_step dropdown_dates_month_style dropdown_prefix dropdown_prepostfix dropdown_separators dropdown_size dualscale_headerA dualscale_headerB em_validation_q em_validation_q_tip em_validation_sq em_validation_sq_tip equals_num_value equation exclude_all_others exclude_all_others_auto hidden hide_tip input_boxes input_size label_input_columns location_city location_country location_defaultcoordinates location_mapheight location_mapservice location_mapwidth location_mapzoom location_nodefaultfromip location_postal location_state max_answers max_filesize max_num_of_files max_num_value max_num_value_n max_subquestions maximum_chars min_answers min_num_of_files min_num_value min_num_value_n multiflexible_checkbox multiflexible_max multiflexible_min multiflexible_step num_value_int_only numbers_only other_comment_mandatory other_numbers_only other_replace_text page_break parent_order placeholder prefix printable_help public_statistics random_group random_order rank_title repeat_headings reverse samechoiceheight samelistheight scale_export show_comment show_grand_total show_title show_totals showpopups slider_accuracy slider_custom_handle slider_default slider_default_set slider_handle slider_layout slider_max slider_middlestart slider_min slider_orientation slider_rating slider_reset slider_reversed slider_separator slider_showminmax statistics_graphtype statistics_showgraph statistics_showmap suffix text_input_columns text_input_width time_limit time_limit_action time_limit_countdown_message time_limit_disable_next time_limit_disable_prev time_limit_message time_limit_message_delay time_limit_message_style time_limit_timer_style time_limit_warning time_limit_warning_2 time_limit_warning_2_display_time time_limit_warning_2_message time_limit_warning_2_style time_limit_warning_display_time time_limit_warning_message time_limit_warning_style use_dropdown value_range_allows_missing - S sid 227824 - S gsid 1 - S admin inherit - S adminemail inherit - S anonymized N - S format I - S savetimings N - S template inherit - S language de-informal - S additional_languages - S datestamp N - S usecookie I - S allowregister I - S allowsave I - S autonumber_start 24 - S autoredirect I - S allowprev Y - S printanswers I - S ipaddr N - S ipanonymize N - S refurl N - S showsurveypolicynotice 0 - S publicstatistics I - S publicgraphs I - S listpublic I - S htmlemail I - S sendconfirmation I - S tokenanswerspersistence I - S assessments I - S usecaptcha E - S usetokens N - S bounce_email inherit - S emailresponseto inherit - S emailnotificationto inherit - S tokenlength -1 - S showxquestions I - S showgroupinfo I - S shownoanswer I - S showqnumcode I - S bounceprocessing N - S showwelcome I - S showprogress I - S questionindex -1 - S navigationdelay -1 - S nokeyboard I - S alloweditaftercompletion I - S googleanalyticsstyle - S googleanalyticsapikey - S tokenencryptionoptions "{ ""enabled"":""Y"",""columns"":{ ""firstname"":""N"",""lastname"":""N"",""email"":""N"" } }" - SL surveyls_survey_id 227824 de-informal - SL surveyls_language de-informal de-informal - SL surveyls_title "Digitale Zusammenarbeit im Ehrenamts- und Engagementsektor" de-informal - SL surveyls_description "

 

" de-informal - SL surveyls_welcometext "

 

Vielen Dank für deine Teilnahme an unserer Umfrage zu Digitaler Zusammenarbeit im Ehrenamts- und Engagement Sektor. Die Studie wird durchgeführt von dem Verein Local-IT e.V. und gefördert von der Deutschen Stiftung für Ehrenamt und Engagement.

Nach zwei Jahren Covid-bedingter, erzwungener Erkundung der digitalen Möglichkeiten der Zusammenarbeit, wollen wir resümieren: Was konnten Vereine oder ehrenamtlich Engagierte mitnehmen aus dieser Zeit? Welche digitale Tools werden auch weiter genutzt? Was klappt gut, was könnte besser oder anders gelöst werden?

Die Umfrage wird ca. 10 bis 15 Minuten dauern.

 

Datenschutzhinweise:

Wir, Local-IT e.V., sind die für die Durchführung dieser Studie verantwortliche Stelle. Wir werden die Informationen, die du uns zur Verfügung stellst, nur zu Forschungszwecken verwenden.

Deine Teilnahme ist freiwillig und du kannst die Teilnahme jederzeit beenden. Diese Daten werden anonym erfasst. Die Ergebnisse der Studie werden, wenn überhaupt, nur in zusammengefasster Form an Dritte übermittelt. Wir raten dir davon ab, personenbezogene Daten (wie Name, E-Mail-Adresse oder Telefonnummer) im Kommentarfeld zu hinterlassen. 

 

" de-informal - SL surveyls_endtext "

Vielen Dank für deine Teilnahme!

" de-informal - SL surveyls_policy_notice de-informal - SL surveyls_policy_notice_label de-informal - SL surveyls_url de-informal - SL surveyls_urldescription de-informal - SL surveyls_email_invite_subj "Einladung zur einer Umfrage" de-informal - SL surveyls_email_invite "Hallo {FIRSTNAME},

Hiermit möchten wir dich zu einer Umfrage einladen.

Der Titel der Umfrage ist
'{SURVEYNAME}'

'{SURVEYDESCRIPTION}'

Um an dieser Umfrage teilzunehmen, klicke bitte auf den unten stehenden Link.

Mit freundlichen Grüßen,

{ADMINNAME} ({ADMINEMAIL})

----------------------------------------------
Klicke hier um die Umfrage zu starten:
{SURVEYURL}

Wenn Du an dieser Umfrage nicht teilnehmen und keine weiteren Erinnerungen erhalten möchtest, klicke bitte auf den folgenden Link:
{OPTOUTURL}

Wenn Du geblockt bist, jedoch wieder teilnehmen und weitere Einladungen erhalten möchtest, klicken bitte auf den folgenden Link:
{OPTINURL}" de-informal - SL surveyls_email_remind_subj "Erinnerung an die Teilnahme an einer Umfrage" de-informal - SL surveyls_email_remind "Hallo {FIRSTNAME},

Vor kurzem haben wir Dich zu einer Umfrage eingeladen.

Zu unserem Bedauern haben wir bemerkt, dass Du die Umfrage noch nicht ausgefüllt hast. Wir möchten Dir mitteilen, dass die Umfrage noch aktiv ist und würden uns freuen, wenn Du teilnehmen könntest.

Der Titel der Umfrage ist
'{SURVEYNAME}'

'{SURVEYDESCRIPTION}'

Um an dieser Umfrage teilzunehmen, klicke bitte auf den unten stehenden Link.

Mit freundlichen Grüßen,

{ADMINNAME} ({ADMINEMAIL})

----------------------------------------------
Klicken Du hier um die Umfrage zu starten:
{SURVEYURL}

Wenn Du an dieser Umfrage nicht teilnehmen und keine weiteren Erinnerungen erhalten möchtest, klicke bitte auf den folgenden Link:
{OPTOUTURL}" de-informal - SL surveyls_email_register_subj "Registrierungsbestätigung für Teilnahmeumfrage" de-informal - SL surveyls_email_register "Hallo {FIRSTNAME},

Du (oder jemand, der Deine E-Mail benutzt hat) hat sich für eine Umfrage mit dem Titel {SURVEYNAME} angemeldet.

Um an dieser Umfrage teilzunehmen, klicke bitte auf den folgenden Link.nn{SURVEYURL}

Wenn Du irgendwelche Fragen zu dieser Umfrage hast oder wenn Du Dich _nicht_ für diese Umfrage angemeldet hast und Du glaubst, dass Dir diese E-Mail irrtümlicherweise zugeschickt worden ist, kontaktiere bitte {ADMINNAME} unter {ADMINEMAIL}." de-informal - SL surveyls_email_confirm_subj "Bestätigung für die Teilnahme an unserer Umfrage" de-informal - SL surveyls_email_confirm "Hallo {FIRSTNAME},

Vielen Dank für die Teilnahme an der Umfrage mit dem Titel {SURVEYNAME}. Deine Antworten wurden bei uns gespeichert.

Wenn du irgendwelche Fragen zu dieser E-Mail hast, kontaktiere bitte {ADMINNAME} unter {ADMINEMAIL}.

Mit freundlichen Grüßen,

{ADMINNAME}" de-informal - SL surveyls_dateformat 1 de-informal - SL email_admin_notification_subj "Antwortabsendung für Umfrage {SURVEYNAME}" de-informal - SL email_admin_notification "Hallo,

Eine neue Antwort wurde für die Umfrage '{SURVEYNAME}' abgegeben.

Klicke auf den folgenden Link um den Antwortdatensatz anzusehen:
{VIEWRESPONSEURL}

Klicke auf den folgenden Link um den Antwortdatensatz zu bearbeiten:
{EDITRESPONSEURL}

Um die Statistik zu sehen, klicke hier:
{STATISTICSURL}" de-informal - SL email_admin_responses_subj "Antwortabsendung für Umfrage {SURVEYNAME} mit Ergebnissen" de-informal - SL email_admin_responses "Hallo,

Eine neue Antwort wurde für die Umfrage '{SURVEYNAME}' abgegeben.

Klicke auf den folgenden Link um den Antwortdatensatz anzusehen:
{VIEWRESPONSEURL}

Klicke auf den folgenden Link um den Antwortdatensatz zu bearbeiten:
{EDITRESPONSEURL}

Um die Statistik zu sehen, klicke hier:
{STATISTICSURL}


Die folgenden Antworten wurden vom Teilnehmer gegeben:
{ANSWERTABLE}" de-informal - SL surveyls_numberformat 1 de-informal -1 G 1 "Meine Organisation" 1 "Zunächst ein paar Fragen um deine Organisation, in der es in dieser Studie gehen soll besser einordnen zu können:" de-informal +G 1 "Meine Organisation" 1 "Zunächst ein paar Fragen um deine Organisation, in der es in dieser Studie gehen soll besser einordnen zu können:" de-informal 45 Q L G1Q01 1 "Hat deine Organisation eine anerkannte Gemeinnützigkeit?" de-informal N N N 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 45 A 0 AO01 Ja de-informal 0 45 A 0 AO02 "Ich glaube schon" de-informal 0 diff --git a/survey_227824_R_data_file-2022-08-13.csv b/data/raw/survey_227824_R_data_file-2022-08-13.csv similarity index 100% rename from survey_227824_R_data_file-2022-08-13.csv rename to data/raw/survey_227824_R_data_file-2022-08-13.csv diff --git a/survey_227824_R_syntax_file-2022-08-13.R b/data/raw/survey_227824_R_syntax_file-2022-08-13.R similarity index 99% rename from survey_227824_R_syntax_file-2022-08-13.R rename to data/raw/survey_227824_R_syntax_file-2022-08-13.R index 16e7b4f..f69f9c3 100644 --- a/survey_227824_R_syntax_file-2022-08-13.R +++ b/data/raw/survey_227824_R_syntax_file-2022-08-13.R @@ -1,4 +1,4 @@ -data <- read.csv("survey_227824_R_data_file.csv", quote = "'\"", na.strings=c("", "\"\""), stringsAsFactors=FALSE, fileEncoding="UTF-8-BOM") +data <- read.csv(here::here("data", "raw", "survey_227824_R_data_file-2022-08-13.csv"), quote = "'\"", na.strings=c("", "\"\""), stringsAsFactors=FALSE, fileEncoding="UTF-8-BOM") # LimeSurvey Field type: F @@ -1020,3 +1020,5 @@ data[, 209] <- as.numeric(data[, 209]) attributes(data)$variable.labels[209] <- "[Teil einer größeren Organisation/ Dachverband] Meine Organisation ist..." data[, 209] <- factor(data[, 209], levels=c(1,0),labels=c("Ja", "Nicht gewählt")) names(data)[209] <- "G5Q05_SQ004" + +readr::write_rds(data, here::here("data", "processed", "survey_with_labels.rds"))