EA Mental Health Exploratory Plots


























The Code to produce them, in R, was:

# EA Mental Health - Clean

# Dependencies:

  # install.packages("tidyr")
  # install.packages("scales")
  # install.packages("tidyverse")
  # install.packages("viridisLite")
  # install.packages("viridis")
  # install.packages("magrittr")

library(stringi)
library(magrittr)
library(tidyr)
library(scales)
library(tidyverse)
library(viridisLite)
library(viridis)
library(forcats)

# Set your working directory to where the data is:
setwd("directory")

A <- read.csv("Responses.csv", header=TRUE, sep=",", stringsAsFactors = FALSE)
  ## Note: if you don't select stringsAsFactors = FALSE, you can't manipulate elements as strings (for example, with grepl) unless you first process your data. For example: as.character(A[,column of interest]) -> A[,column of interest]

# Q1:How involved are you with the effective altruism community
colnames(A)[3]
(ggplot(data = A, aes(x = How.involved.are.you.in.the.Effective.Altruism.Community.)) +
  geom_bar(
      aes(y = (..count..)/sum(..count..)), 
      fill="royalblue4"
      )+
  labs(
    title="Q1: How involved are you in the Effective Altruism community?",
    subtitle="n =303", 
    x=NULL, 
    y="Frequency (%)", 
    caption="@EA Mental Health Survey"
    )+
  scale_y_continuous(
    labels = percent_format(accuracy = 1)
    )+
  coord_flip()+
  theme(
    legend.title = element_blank(), 
    plot.subtitle = element_text(hjust = 0.5), 
    plot.title = element_text(hjust = 0.5),
    legend.position="bottom")
) %>%
  ggsave("Q1.png", plot =., units="in", width=10, height=5, dpi=800)

## Q2: Do you attend EA Meetings
colnames(A)[4]

### This adds a line:
for( i in c(1:length(A[,4]))){
  if(A[,4][i]=="No, but I regularly participate in an EA online group"){
    A[,4][i] = "No, but I regularly participate\n in an EA online group"
  }
}

ifelse(A[,4]=="", "Did not answer", A[,4]) -> A[,4]

(ggplot(data = A, aes(x = Do.you.attend.EA.meetings.)) +
  geom_bar(
    aes(
      y = (..count..)/sum(..count..)), 
      fill="royalblue4"
      )+
  coord_flip()+
  labs(
    title="Q2:Do you attend EA Meetings?", 
    subtitle="n =303", 
    x=NULL, 
    y="Frequency (%)",
    caption="@EA Mental Health Survey"
    )+
  scale_y_continuous(
    labels = percent_format(accuracy = 1)
    )+
  theme(
    legend.title = element_blank(), 
    plot.subtitle = element_text(hjust = 0.5), 
    plot.title = element_text(hjust = 0.5),
    legend.position="bottom")
) %>%
  ggsave("Q2.png", plot =., units="in", width=10, height=5, dpi=800)

## Q3: How much impact do EA ideas have on your life
ini = 2
i=ini+3
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub(" \\?","?",.)  -> titulo

ifelse(A[,i]=="", "Did not answer", A[,i]) -> A[,i]

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
  geom_bar(
    aes(y = (..count..)/sum(..count..)), 
    fill="royalblue4")+
  coord_flip()+
  labs(
    title=titulo, 
    subtitle="n =303", 
    x=NULL, 
    y="Frequency (%)", 
    caption="@EA Mental Health Survey"
    )+
  scale_y_continuous(
    labels = percent_format(accuracy = 1)
    )+
  theme(legend.title = element_blank(), plot.subtitle = element_text(hjust = 0.5), plot.title = element_text(hjust = 0.5),legend.position="bottom")
) %>%
ggsave("Q3.png", plot =., units="in", width=10, height=5, dpi=800)


## Q4: Do you donate part of your income to GiveWell recommended charities?
ini = 2
i=ini+4

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub(" \\?","?",.)  -> titulo

ifelse(A[,i]=="", "Did not answer", A[,i]) -> A[,i]

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
  geom_bar(
    aes(y = (..count..)/sum(..count..)),
    fill="royalblue4"
    )+
  labs(
    title=titulo, 
    subtitle="n =303", 
    x=NULL, 
    y="Frequency (%)", 
    caption="@EA Mental Health Survey"
    )+
  scale_y_continuous(
    labels = percent_format(accuracy = 1)
    )+
  theme(
    legend.title = element_blank(), 
    plot.subtitle = element_text(hjust = 0.5), 
    plot.title = element_text(hjust = 0.5),
    legend.position="bottom"
    ) 
  )%>%
  ggsave("Q4.png", plot =., units="in", width=10, height=5, dpi=800)

  ## I just discovered piping! Elegant!

## Q5: Which of these conditions have you been formally diagnosed with?
i=ini+5

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub(" \\?","?",.)  -> titulo

### This question will require some processing:
List_of_Mental_Illnesses = c("Depression","Anxiety", "Obsessive Compulsive Disorder", "Disordered Eating", "Alcoholism", "Drug Addiction", "Borderline Personality Disorder", "Bipolar Disorder", "Autism", "ADHD", "Schizophrenia")

MI=list()
for( j in List_of_Mental_Illnesses){
  MI$count = c(MI$count, 
                sum(
                  grepl(j, A[,i])
                )
              )
  MI$type = c(MI$type, j)
}

MI$frequency = 100*MI$count / l
as.data.frame(MI) -> MI

(ggplot(data = MI, aes(x =type, y = frequency)) +
  geom_histogram(
    stat="identity", 
    fill="royalblue4")+
  scale_y_continuous(
    labels=function(x) paste0(x,"%"),
    limits = c(0, 33)
    )+
  scale_x_discrete(
    limits=
      List_of_Mental_Illnesses[
          order(MI$count)# c(1,2,10,8,3,4,9,7,11,6,5) ## This orders the ilnesses by frequency
        ]
    )+
  coord_flip()+    
  labs(
    title=titulo, 
    subtitle="n =303", 
    x=NULL, 
    y="Frequency (%)", 
    caption="@EA Mental Health Survey"
    )+
  theme(
    legend.title = element_blank(), 
    plot.subtitle = element_text(hjust = 0.5), 
    plot.title = element_text(hjust = 0.5),
    legend.position="bottom"
    ) 
  ) %>%
    ggsave("Q5.png", plot =., units="in", width=10, height=5, dpi=800)

## Q6: Which of these conditions do you think you may have  but have never been formally diagnosed with?
  ## I guess we can just reuse the code from Q5

i=ini+6
  
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub(" \\?","?",.)  -> titulo

titulo= "Q6: Which of these conditions do you think you may have\nbut have never been formally diagnosed with?"

List_of_Mental_Illnesses = c("Depression","Anxiety", "Obsessive Compulsive Disorder", "Disordered Eating", "Alcoholism", "Drug Addiction", "Borderline Personality Disorder", "Bipolar Disorder", "Autism", "ADHD", "Schizophrenia")

MI2=list()
for( j in List_of_Mental_Illnesses){
  MI2$count = c(MI2$count, 
               sum(
                 grepl(j, A[,i])
               )
  )
  MI2$type = c(MI2$type, j)
}

MI2$frequency = 100*MI2$count / l
as.data.frame(MI2) -> MI2

(ggplot(data = MI2, aes(x =type, y = frequency)) +
    geom_histogram(
      stat="identity", 
      fill="royalblue4")+
    scale_y_continuous(
      labels=function(x) paste0(x,"%"),
      limits = c(0, 33)
    )+
    scale_x_discrete(
      limits=
        List_of_Mental_Illnesses[
            order(MI2$count)
            #c(2,1,10,9,4,3,8,5,7,6,11) ## This orders the ilnesses by frequency
          ]
    )+
    coord_flip()+    
    labs(
      title=titulo, 
      subtitle="n =303", 
      x=NULL, 
      y="Frequency (%)", 
      caption="@EA Mental Health Survey"
    )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom"
    ) 
) %>%
  ggsave("Q6.png", plot =., units="in", width=10, height=5, dpi=800)


## Q5 and Q6 together. Both (formally diagnosed or not) count.
i=ini+5
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub(" \\?","?",.)  -> titulo1

colnames(A)[i+1] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini+1,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub(" \\?","?",.)  -> titulo2

paste(c(titulo1, titulo2), collapse="\n+\n")-> titulo

MI$diagnosed = "Diagnosed"
MI2$diagnosed = "Intuited"

as.data.frame(rbind(MI, MI2)) -> MI3

(ggplot(data = MI3, aes(x =type, y = frequency, fill=diagnosed)) +
    geom_histogram(
      stat="identity",
      position= position_stack(reverse = TRUE)
      )+
    scale_fill_manual(
      values=c("royalblue3","steelblue1"))+
    scale_x_discrete(
      limits=
        List_of_Mental_Illnesses[
          order(MI$count +MI2$count ) ## This orders the ilnesses by frequency
          ]
    )+
    scale_y_continuous(
      labels=function(x) paste0(x,"%"))+
    coord_flip()+
    labs(
      title=titulo, 
      subtitle="n =303", 
      x=NULL, 
      y="Frequency (%)", 
      caption="@EA Mental Health Survey"
      )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom"
      ) 
  ) %>%
    ggsave("Q5and6.png", plot =., units="in", width=10, height=5, dpi=800)

## Q7: During the past 14 days  how many hours did you miss from work because of mental health problems?

i=ini+7

read.csv("horus.csv", header=TRUE, sep=",", stringsAsFactors = FALSE) %>%
  .[complete.cases(sapply(.,as.integer)),] %>%
  .[order(as.integer(.$hours_worked)),] -> horus

horus$person2 = c(1:dim(horus)[1])

### We take the opportunity to calculate the average hours worked and missed.
colnames(horus)

    mean(as.integer(horus$hours_worked))
      # the mean is 59.58182 ~ 59.5 hours / 2 weeks
    sd(as.integer(horus$hours_worked))
      # 31.19616
    mean(as.integer(horus$hours_missed_processed))
      # 5.749091
    sd(as.integer(horus$hours_missed_processed))
      # 14.44113
    mean(as.integer(horus$hours_missed_processed_other_reasons))
      # 6.578182
    sd(as.integer(horus$hours_missed_processed_other_reasons))
      # 13.7492

### Problem: not everyone has answered each of the three questions, and the above only takes into account those who have. If we take into account 
    read.csv("horus.csv", header=TRUE, sep=",", stringsAsFactors = FALSE)-> horus2
    mean(as.integer(horus2$hours_worked), na.rm=TRUE)
    # the mean is 58.31707 ~ 58.3 hours / 2 weeks
    sd(as.integer(horus2$hours_worked), na.rm=TRUE)
    # 31.74407
    mean(as.integer(horus2$hours_missed_processed), na.rm=TRUE)
    # 6.190141
    sd(as.integer(horus2$hours_missed_processed), na.rm=TRUE)
    # 15.05628
    mean(as.integer(horus2$hours_missed_processed_other_reasons), na.rm=TRUE)
    # 6.758007
    sd(as.integer(horus2$hours_missed_processed_other_reasons), na.rm=TRUE)
    # 14.06154

### However, what we're interested in is in the ratio. The following plot ignores partial nonrespondents:

### We continue modifying the list further, to arrive at the plot we want

gather(horus,"type of hour", "hours", c(2:4)) -> horus
# Gather transforms:
    #  Person, hour_worked, hours_missed, hours_missed_non_mental ilness
    #person hours_worked hours_missed_processed hours_missed_processed_other_reasons
    #1      1           40                      0                                    0
    #> horus[c(1:10),]
    #person hours_worked hours_missed_processed hours_missed_processed_other_reasons
    #1       1           40                      0                                    0
    #2       2           80                      0                                    0
    #3       3          100                      2                                   10
    #4       4           80                      0                                    0

## Into:
    #person type of hour hours
    #1      1 hours_worked    40
    #2      2 hours_worked    80
    #3      3 hours_worked   100
    #4      4 hours_worked    80
    #5      5 hours_worked     0

horus$hours = as.integer(horus$hours)

(ggplot(data = horus, aes(x =person2, y = hours, fill=get("type of hour"))) +
  geom_histogram(stat="identity") +
  scale_fill_viridis_d(
    begin=1, 
    end=.2, 
    labels=
      c(
        " Work hours missed for mental health reasons",
        " Work hours missed for other reasons", 
        " Total hours of work" 
      )
    )+
  labs(
    title="Q7-9: Mental health and work hours", 
    subtitle="n =303", 
    x="Persons, ordered by hours worked", 
    y="Hours", 
    caption="@EA Mental Health Survey")+
  theme(
    legend.title = element_blank(), 
    plot.subtitle = element_text(hjust = 0.5), 
    plot.title = element_text(hjust = 0.5),
    legend.position="bottom", 
    legend.direction = "vertical")
)%>%
    ggsave("Q7-9c.png", plot =., units="in", width=12, height=8, dpi=800)

## Q10: During the past 14 days  how much did mental health problems affect your productivity while you were working?

ini=2
i=ini+10

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub(" \\?","?",.)  -> titulo

titulo ="Q10: During the past 14 days, how much did mental health problems \naffect your productivity while you were working?"

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
  geom_bar(
    aes(y = (..count..)/sum(..count..)), 
    fill="royalblue4"
    )+
  labs(
    title=titulo, 
    subtitle="n =303", 
    x=NULL, y="Frequency (%)", 
    caption="@EA Mental Health Survey"
    )+
  scale_y_continuous(
    labels = percent_format(accuracy = 1)
    )+
  theme(
    legend.title = element_blank(), 
    plot.subtitle = element_text(hjust = 0.5), 
    plot.title = element_text(hjust = 0.5),
    legend.position="bottom") 
)%>%
  ggsave("Q10.png", plot =., units="in", width=10, height=5, dpi=800)

## [1] "Q11: During the past 14 days  how much did mental health problems affect your ability to do your regular daily activities  other than work at a job?"

ini = 2
i=ini+11

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("  "," ",.) %>% 
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

titulo = "Q11: During the past 14 days, how much did mental health problems\n affect your ability to do your regular daily activities\n other than work at a job?"

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
    geom_bar(aes(
      y = (..count..)/sum(..count..)), 
      fill="royalblue4")+
    labs(
      title=titulo, 
      subtitle="n =303", 
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey"
      )+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
      )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=10, height=5, dpi=800)

## Q12: Are the past 14 days representative of your average mental health?

ini = 2
i=ini+12

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

titulo

unique(A[,i])
ifelse(grepl("No", A[,i]),"No", A[,i]) -> A[,i]
ifelse(grepl("Yes", A[,i]),"Yes", A[,i]) -> A[,i]
ifelse(A[,i]=="","Did not answer", A[,i]) -> A[,i]
unique(A[,i])

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
    geom_bar(
      aes(y = (..count..)/sum(..count..)), 
      fill="royalblue4")+
    labs(
      title=titulo, 
      subtitle="n =303", 
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey"
      )+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
      )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom"
      ) 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=10, height=5, dpi=800)

## Perhaps do some linear regression model? Predict hours out of of the abstract questions + how representative it is? / whether it has been better. Exploratory plots.

## [1] "Q13: If you answered  No  to the previous question  how has your mental health differed over the past 14 days?"

ini = 2
i=ini+13

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

titulo = "Q13: If you answered 'No' to the previous question,\nhow has your mental health differed over the past 14 days?"

  ## The unprocessed data is just a comment. Must be processed.
  ## Levels: Much worse, worse, better, Much better

#representative = c()
#for(j in c(1:length(A[,i]))){
#  if(A[,i][j]!=""){
#    representative=c(representative, readline(paste(c("j=",j," Answer=", A[,i][j],". Value = "),collapse="")))
#  }
#  else{
#    representative=c(representative, NA)
#  }
#}

representative2 <- read.csv(file = "Q13_how_has_your_mental_health_differed_over_the_past_14_days.csv",col.names=TRUE)

as.data.frame(representative2[!is.na(representative2)]) -> rep

(ggplot(data = rep, aes(x = get(colnames(rep)[1]))) +
    geom_bar(
      aes(y = (..count..)/sum(..count..)), 
      fill="royalblue4"
      )+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
      )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") )%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=10, height=5, dpi=800)

## [1] "Q14: How challenging was it to receive the mental healthcare services you needed within the past 12 months?"

ini = 2
i=ini+14

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

titulo="Q14: How challenging was it to receive the mental healthcare services\n you needed within the past 12 months?"

ifelse(grepl("I have not", A[,i]), "I have not needed mental healthcare services\n in the past 12 months.", A[,i]) -> A[,i]
ifelse(grepl("I did not seek", A[,i]), "I did not seek out mental healthcare services \nin the past 12 months but believe \nI could have benefitted from them.", A[,i]) -> A[,i]
ifelse(A[,i]=="", "No answer", A[,i]) -> A[,i]


(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
    geom_bar(aes(y = (..count..)/sum(..count..)), fill="royalblue4")+
    #coord_flip()+
    coord_flip()+
    scale_x_discrete(limits=unique(A[,i])[rev(c(8,1,5,4,3,2,6))])+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
    )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=10, height=5, dpi=800)

## [1] "Q15: How challenging is it to find useful information on mental healthcare services?"

ini = 2
i=ini+15

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

ifelse(A[,i]=="", "No answer", A[,i]) -> A[,i]
ifelse(grepl("I have not looked for", A[,i]),"I have not looked for information\n on mental healthcare services.", A[,i]) -> A[,i]

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
    geom_bar(aes(y = (..count..)/sum(..count..)), fill="royalblue4")+
    #coord_flip()+
    coord_flip()+
    scale_x_discrete(limits=unique(A[,i])[rev(c(7,4,1,5,3,2,6))])+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
    )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=12, height=5, dpi=800)

## [1] "Q16: Do you experience financial difficulties as a result of mental healthcare?"

ini = 2
i=ini+16

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

titulo = "Q16: Do you experience financial difficulties\nas a result of mental healthcare?"

ifelse(A[,i]=="", "No answer", A[,i]) -> A[,i]

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
    geom_bar(aes(y = (..count..)/sum(..count..)), fill="royalblue4")+
    #coord_flip()+
    coord_flip()+
    scale_x_discrete(limits=unique(A[,i])[rev(c(1,4,3,2,5))])+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
    )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=12, height=5, dpi=800)

## [1] "I am currently receiving the mental healthcare I need"

ini = 2
i=ini+17

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo
titulo
titulo="Q17: I am currently receiving the mental healthcare I need"

ifelse(A[,i]=="", "No answer", A[,i]) -> A[,i]

(ggplot(data = A, aes(x = fct_infreq(get(colnames(A)[i])))) +
    geom_bar(aes(y = (..count..)/sum(..count..)), fill="royalblue4")+
    coord_flip()+
    scale_x_discrete(limits=unique(A[,i])[rev(c(5,4, 2,1,3,6))])+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
    )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=12, height=5, dpi=800)

Receiving = list()
for( j in unique(A[,i])){
  Receiving$answer = c(Receiving$answer,sum(A[,i]==j)/303)
  Receiving$category = c(Receiving$category,j)
}

Receiving = as.data.frame(Receiving)
factor(Receiving$category, levels = Receiving$category) -> Receiving$category
Receiving = Receiving[rev(c(1,2,5,6,4,3)),]
factor(Receiving$category, levels = Receiving$category) -> Receiving$category

(ggplot(data = Receiving, aes(x="", y = answer, fill = category)) +
    geom_bar(stat="identity")+
    labs(
        title=titulo, 
        subtitle="n =303", 
        x=NULL, 
        y=NULL, 
        caption="@EA Mental Health Survey"
        )+
    scale_fill_viridis_d(
        #limits=unique(A[,i])[rev(c(6,1,2,5,4,3))]
        )+
    coord_polar(
        "y", 
        start=0) +
    theme(
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        panel.grid  = element_blank())+
    theme(
        legend.title = element_blank(), 
        plot.subtitle = element_text(hjust = 0.5), 
        plot.title = element_text(hjust = 0.5)
        ) 
) %>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=8, height=6, dpi=800)


## "Q18: How satisfied are you\nwith the mental healthcare you ve received?"

ini = 2
i=ini+18

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

titulo="Q18: How satisfied are you\nwith the mental healthcare you ve received?"

ifelse(A[,i]=="", "No answer", A[,i]) -> A[,i]
ifelse(A[,i]=="I have not received mental healthcare services.", "I have not received mental\nhealthcare services.", A[,i]) -> A[,i]

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
    geom_bar(aes(y = (..count..)/sum(..count..)), fill="royalblue4")+
    coord_flip()+
    scale_x_discrete(
      limits=unique(A[,i])[rev(c(5,1,4,3,2,6))]
      )+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
    )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=12, height=5, dpi=800)

## [1] "Q19: Which of the following treatments have you tried?"

ini = 2
i=ini+19

colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

titulo = "Which treatments have you tried?"

## The following is somewhat ugly, but I didn't want to take the time to write short code.
Treatments = list()

Treatments$num = c(Treatments$num, sum(grepl("CBT", A[,i])))
Treatments$name = c(Treatments$name, "CBT")

Treatments$num = c(Treatments$num, sum(grepl("Group therapy", A[,i])))
Treatments$name = c(Treatments$name, "Group therapy")

Treatments$num = c(Treatments$num, sum(grepl("upport", A[,i])) + sum(grepl("connection",A[,i])))
Treatments$name = c(Treatments$name, "Group / friend support")

Treatments$num = c(Treatments$num, sum(grepl("Inpatient", A[,i])))
Treatments$name = c(Treatments$name, "Inpatient mental health treatment")

Treatments$num = c(Treatments$num, sum(grepl("None", A[,i])) + sum(A[,i]==""))
Treatments$name = c(Treatments$name, "None")

Treatments$num = c(Treatments$num, sum(grepl("Meditation", A[,i])))
Treatments$name = c(Treatments$name, "Meditation,mindfulness techniques,\nalternative therapies
")

Treatments$num = c(Treatments$num, sum(grepl("Prescribed", A[,i])))
Treatments$name = c(Treatments$name, "Prescribed medication")

Treatments$num = c(Treatments$num, sum(grepl("sychotherapy", A[,i])) + sum(grepl("ounselling", A[,i])) + sum(grepl("psychology service", A[,i])))
Treatments$name = c(Treatments$name, "Psychotherapy")

Treatments$num = c(Treatments$num, sum(grepl("Self-medication", A[,i])) + sum(grepl("GABA", A[,i])) + sum(grepl("St John", A[,i])))
Treatments$name = c(Treatments$name, "Self-medication")

Treatments$num = c(Treatments$num, sum(grepl("books", A[,i])) + sum(grepl("Bibliotherapy", A[,i])))
Treatments$name = c(Treatments$name, "Books")

Treatments$num = c(Treatments$num, sum(grepl("elf-organisation", A[,i])) + sum(grepl("stick to routine", A[,i])) + sum(grepl("self-discipline", A[,i])))
Treatments$name = c(Treatments$name, "Self-discipline")

Treatments$num = c(Treatments$num, sum(grepl("ports", A[,i])) + sum(grepl("running", A[,i])) + sum(grepl("physical activity", A[,i])) + sum(grepl("exercise", A[,i])))
Treatments$name = c(Treatments$name, "Exercise")

Treatments$num = c(Treatments$num, sum(grepl("CBD", A[,i])) + sum(grepl("CFAR", A[,i])) + sum(grepl("EMDR", A[,i])) + sum(grepl("gratitude", A[,i])) + sum(grepl("diet", A[,i])) + sum(grepl("free phone consultant", A[,i])) + sum(grepl("PRI", A[,i])) + sum(grepl("practice sleep hygene", A[,i])) + sum(grepl("Sun lamp", A[,i])) + sum(grepl("Talking Space", A[,i])) + sum(grepl("Neuro-linguistic programming", A[,i])) )
Treatments$name = c(Treatments$name, "Others")

as.data.frame(Treatments) ->Treatments
Treatments[order(Treatments$num),] -> Treatments
factor(Treatments$name, levels = Treatments$name) -> Treatments$name

View(Treatments)

(ggplot(data = Treatments, aes(x = name, y = num)) +
    geom_col(fill="royalblue4")+
    coord_flip()+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,"-2.png"), collapse=""), plot =., units="in", width=9, height=6, dpi=800)

## [1] "Q20: Any other thoughts you d like to share on mental healthcare access?"

i=ini +20
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

## [1] "Q21: I believe that offering mental health resources to its members is an effective use of the EA Community's resources"
i=ini +21
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo
titulo = "Q21: I believe that offering mental health resources to its members is an effective use of the EA Community's resources"

ifelse(A[,i]=="", "No answer", A[,i]) -> A[,i]

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
    geom_bar(aes(y = (..count..)/sum(..count..)), fill="royalblue4")+
    coord_flip()+
    scale_x_discrete(
      limits=unique(A[,i])[rev(c(3,1,2,4,6,5))]
      )+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
    )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=12, height=5, dpi=800)

## [1] "Q22: I believe that offering mental health resources to effective altruists is NOT likely to be one of the most effective interventions available"

i=ini +22
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

titulo = "Q22: I believe that offering mental health resources to effective altruists\nis NOT likely to be one of the most effective interventions available"

ifelse(A[,i]=="", "No answer", A[,i]) -> A[,i]

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
    geom_bar(aes(y = (..count..)/sum(..count..)), fill="royalblue4")+
    coord_flip()+
    scale_x_discrete(limits=unique(A[,i])[rev(c(6,3,1,2,5,4))])+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
    )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=12, height=5, dpi=800)

## Q23: Please explain your answers to the questions above

i=ini +23
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

## [1] "Q24: Do you think you could personally benefit from EA community mental health resources?"

i=ini +24
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

ifelse(A[,i]=="", "No answer", A[,i]) -> A[,i]
ifelse(is.na(A[,i]), "No answer", A[,i]) -> A[,i]

(ggplot(data = A, aes(x = get(colnames(A)[i]))) +
    geom_bar(aes(y = (..count..)/sum(..count..)), fill="royalblue4")+
    scale_x_discrete(limits=unique(A[,i])[rev(c(3,2,1,4))])+
    labs(
      title=titulo, 
      subtitle="n =303",
      x=NULL, y="Frequency (%)", 
      caption="@EA Mental Health Survey")+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
    )+
    theme(
      legend.title = element_blank(), 
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%  
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=12, height=5, dpi=800)


## [1] "Q25: Which  if any  of the following resources do you think you could potentially benefit from?"
ini=2
i=ini +25
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

ifelse(A[,i]=="", "No answer", A[,i]) -> A[,i]
ifelse(is.na(A[,i]), "No answer", A[,i]) -> A[,i]

Answers = c("No answer",
"Non-clinical mental healthcare supporter/advisor",
"Employee assistance programs",
"Mental healthcare navigators",
"EA-knowledgeable therapists",
"Funds for treatment",
"Other")

s=0
t=as.vector(A[,i])
for(j in c(1:303)){
  if(!(t[j]=="" | t[j]%in%Answers)){
    cat("\n",j+1," - ",t[j], ":")
    s=s+as.integer(readline())  
  }
} ## s=31

You_could_benefit=list()
for(j in Answers){
  You_could_benefit$thing = c(You_could_benefit$thing, j)
  You_could_benefit$count = c(You_could_benefit$count, sum(grepl(j, A[,i])))
}
as.data.frame(You_could_benefit) -> You_could_benefit
You_could_benefit$count[7] = 31

    ##  158  -  Someone answered they could benefit from heroin. Heroin :

(ggplot(data = You_could_benefit, aes(x = thing, y = count/303 )) +
    geom_col(fill="royalblue4")+
    #coord_flip()+
    labs(
      title=titulo, 
      subtitle="n =303", 
      x=NULL, 
      y="Frequency (%)", 
      caption="@EA Mental Health Survey"
      )+
    coord_flip()+
    scale_x_discrete(
      #limits=unique(A[,i])[rev(c(3,2,1,4))]
      )+
    scale_y_continuous(
      labels = percent_format(accuracy = 1)
      )+
    theme(
      legend.title = element_blank(),
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      legend.position="bottom") 
)%>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=12, height=5, dpi=800)



## [1] "Q26: Any other thoughts you d like to share on EA sponsored mental health resources?"

ini=2
i=ini +26
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo


## Country

ini=2
i=ini +27
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

## Age

ini=2
i=ini +28
colnames(A)[i] %>%
  gsub("\\."," ",.) %>%
  c("Q",i-ini,": ",.,"?") %>%
  paste(., collapse="") %>%
  gsub("   \\?","?",.) %>% 
  gsub(" \\?","?",.)-> titulo

(ggplot(data=A) +
    geom_bar(
      aes(x=Age),
      fill="royalblue4"
      )+
    labs(
      title=titulo,
      subtitle="n =303", 
      x="Age", 
      y="Relative frequency", 
      caption="@EA Mental Health Survey"
    )+
    theme(
      legend.title = element_blank(),
      plot.subtitle = element_text(hjust = 0.5), 
      plot.title = element_text(hjust = 0.5),
      axis.text.y = element_blank(),
      legend.position="bottom") 
) %>%
  ggsave(paste(c("Q", i-ini,".png"), collapse=""), plot =., units="in", width=12, height=5, dpi=800)