Introduction

In “Rodenticide Legislation Polling”, we examined close-ended responses to various questions about legislation that would restrict rodenticide. We also wanted insight into the reasoning underlying respondents’ attitudes, but we ultimately decided not to include open-ended follow questions because (a) we did not want to fatigue respondents, and (b) coding over a thousand open-ended responses did not seem worth the effort given that we were more interested in simply learning about common reasons underlying respondents’ attitudes than estimating their precise prevalence. So we decided to ask a separate, smaller group of respondents on the same platform (Prolific) their reasoning for or against the same legislative proposals we had asked about in the close-ended poll. Here, we report the prevalence of various reasons respondents reported favoring or opposing rodenticide-related legislation. We did not ask for respondents’ demographic characteristics because we did not plan to see how responses varied by subgroups, or to weight the responses so that they are nationally representative of the U.S. Therefore, readers should not interpret our results as unbiased population estimates.

Combining datasets

First, we must combine two datasets where we asked respondents to indicate why they were in favor or against various types of legislation that would restrict rodenticide use. The first dataset, “pilot,” was part of a pilot of close-ended questions and only after requested open-ended explanations of those responses. Also, only 1 of 2 conditions received the opportunity to provide open-ended responses, and providing an open-ended response was optional. Finally, people who said they “neither oppose nor support” did not provide an open-ended response, but instead indicated whether they had no opinion or had an opinion that was ‘in the middle.’

In contrast, the second dataset, “full,” elicited open-ended responses only and required them.

The data preparation was done using personally identifiable information, so the raw datasets are not publicly available. The code below is just to show how we combined these datasets.

# load packages and set directory -----------------------------------------
library(readr)
library(tidyverse)
library(data.table)
library(scales)
setwd("~/Rethink Priorities/animal welfare/Rodenticides/Rodenticides Polling/Rodenticides polling qualitative")

# clean pilot data --------------------------------------------------------

pilot <- read_csv("Rodenticides August_August 26, 2022_12.18.csv")
pilot = slice(pilot, -(1:2)) #delete first two rows without data
#only keep the columns we need
pilot<-dplyr::select(pilot, c("prolific_id", "state_ban","state_ban_ss", "state_ban_s", "state_ban_o", "state_ban_so", "state_ban_n",
                              "state_preemp","state_preemp_ss", "state_preemp_s", "state_preemp_o", "state_preemp_so", "state_preemp_n",
                              "state_lidlock","state_lidlock_ss", "state_lidlock_s", "state_lidlock_o", "state_lidlock_so", "state_lidlock_n",
                              "town_elim","town_elim_ss", "town_elim_s", "town_elim_o", "town_elim_so", "town_elim_n",
                              "state_cons","state_cons_ss", "state_cons_s", "state_cons_o", "state_cons_so", "state_cons_n"))

#combine state ban open-ended responses into a new single column, then delete all of the old columns 
pilot$state_ban_oe<-ifelse(!is.na(pilot$state_ban_ss),pilot$state_ban_ss,
                    ifelse(!is.na(pilot$state_ban_s),pilot$state_ban_s,
                    ifelse(!is.na(pilot$state_ban_o),pilot$state_ban_o,
                    ifelse(!is.na(pilot$state_ban_so),pilot$state_ban_so, pilot$state_ban_n))))
pilot<-dplyr::select(pilot, -c("state_ban_ss", "state_ban_s", "state_ban_o", "state_ban_so", "state_ban_n")) # we will hold onto their close-ended response in case it is unclear whether the open-ended response indicates support or opposition

#combine state preemption open-ended responses into a new single column, then delete all of the old columns 
pilot$state_preemp_oe<-ifelse(!is.na(pilot$state_preemp_ss),pilot$state_preemp_ss,
                           ifelse(!is.na(pilot$state_preemp_s),pilot$state_preemp_s,
                                  ifelse(!is.na(pilot$state_preemp_o),pilot$state_preemp_o,
                                         ifelse(!is.na(pilot$state_preemp_so),pilot$state_preemp_so, pilot$state_preemp_n))))
pilot<-dplyr::select(pilot, -c("state_preemp_ss", "state_preemp_s", "state_preemp_o", "state_preemp_so", "state_preemp_n")) # we will hold onto their close-ended response in case it is unclear whether the open-ended response indicates support or opposition

#combine lidlock open-ended responses into a new single column, then delete all of the old columns 
pilot$state_lidlock_oe<-ifelse(!is.na(pilot$state_lidlock_ss),pilot$state_lidlock_ss,
                           ifelse(!is.na(pilot$state_lidlock_s),pilot$state_lidlock_s,
                                  ifelse(!is.na(pilot$state_lidlock_o),pilot$state_lidlock_o,
                                         ifelse(!is.na(pilot$state_lidlock_so),pilot$state_lidlock_so, pilot$state_lidlock_n))))
pilot<-dplyr::select(pilot, -c("state_lidlock_ss", "state_lidlock_s", "state_lidlock_o", "state_lidlock_so", "state_lidlock_n")) # we will hold onto their close-ended response in case it is unclear whether the open-ended response indicates support or opposition

#combine town elimination open-ended responses into a new single column, then delete all of the old columns 
pilot$town_elim_oe<-ifelse(!is.na(pilot$town_elim_ss),pilot$town_elim_ss,
                           ifelse(!is.na(pilot$town_elim_s),pilot$town_elim_s,
                                  ifelse(!is.na(pilot$town_elim_o),pilot$town_elim_o,
                                         ifelse(!is.na(pilot$town_elim_so),pilot$town_elim_so, pilot$town_elim_n))))
pilot<-dplyr::select(pilot, -c("town_elim_ss", "town_elim_s", "town_elim_o", "town_elim_so", "town_elim_n")) # we will hold onto their close-ended response in case it is unclear whether the open-ended response indicates support or opposition

#combine consent form open-ended responses into a new single column, then delete all of the old columns 
pilot$state_cons_oe<-ifelse(!is.na(pilot$state_cons_ss),pilot$state_cons_ss,
                           ifelse(!is.na(pilot$state_cons_s),pilot$state_cons_s,
                                  ifelse(!is.na(pilot$state_cons_o),pilot$state_cons_o,
                                         ifelse(!is.na(pilot$state_cons_so),pilot$state_cons_so, pilot$state_cons_n))))
pilot<-dplyr::select(pilot, -c("state_cons_ss", "state_cons_s", "state_cons_o", "state_cons_so", "state_cons_n")) # we will hold onto their close-ended response in case it is unclear whether the open-ended response indicates support or opposition

#subset to people in the condition where open-ended responses were possible
pilot<- subset(pilot, !is.na(state_ban))
#get rid of rows where people just chose not to provide open-ended response
pilot<- subset(pilot, !is.na(state_ban_oe))


# clean full data ---------------------------------------------------------

full <- read_csv("Rodenticides qualitative_September 14, 2022_14.52.csv")
full = slice(full, -(1:2)) #delete first two rows without data

#only keep the columns we need
full<-dplyr::select(full, c("prolific_id", "state_ban","state_preemp","state_lidlock","town_elim","state_cons"))
#change column names to match the pilot data

buttheid <- which(names(full) %in% c("prolific_id"))
colnames(full)[-buttheid ] <- paste(colnames(full)[-buttheid ], "oe", sep = "_")
full = slice(full, -(1:4)) #get rid of rows that are just us checking that the study works correctly
#get rid of missing data
full<- subset(full, !is.na(state_ban_oe))

qualitative_rodent_polling<-full_join(pilot, full)
fwrite(qualitative_rodent_polling, "qualitative_rodent_polling.csv")

Hannah McKay and Annabel Rayner used qualitative_rodent_polling.csv to code open-ended responses into categories. The codebooks for each legislative proposal is here. Here, we deidentify the coded versions so that readers can see the datasets.

stateban_qual <- read_csv("Final_qualitative_rodent_polling - State Ban.csv")
stateban_qual$id <- 1:nrow(stateban_qual) #give respondents IDs, since they no longer have them in the deidentified dataset.
stateban_qual<-dplyr::select(stateban_qual, -c("prolific_id"))
stateban_qual<-stateban_qual %>% relocate(id) #move id to first column
fwrite(stateban_qual, "stateban_qual.csv")

statepreemption_qual <- read_csv("Final_qualitative_rodent_polling - State Preemption.csv")
statepreemption_qual$id <- 1:nrow(statepreemption_qual) #give respondents IDs, since they no longer have them in the deidentified dataset.
statepreemption_qual<-dplyr::select(statepreemption_qual, -c("prolific_id"))
statepreemption_qual<-statepreemption_qual %>% relocate(id) #move id to first column
fwrite(statepreemption_qual, "statepreemption_qual.csv")

localban_qual <- read_csv("Final_qualitative_rodent_polling - Municipal Ban.csv")
localban_qual$id <- 1:nrow(localban_qual) #give respondents IDs, since they no longer have them in the deidentified dataset.
localban_qual<-dplyr::select(localban_qual, -c("prolific_id"))
localban_qual<-localban_qual %>% relocate(id) #move id to first column
fwrite(localban_qual, "localban_qual.csv")

lidlock_qual <- read_csv("Final_qualitative_rodent_polling - Lid-lock Ordinance.csv")
lidlock_qual$id <- 1:nrow(lidlock_qual) #give respondents IDs, since they no longer have them in the deidentified dataset.
lidlock_qual<-dplyr::select(lidlock_qual, -c("prolific_id"))
lidlock_qual<-lidlock_qual %>% relocate(id) #move id to first column
fwrite(lidlock_qual, "lidlock_qual.csv")

consent_qual <- read_csv("Final_qualitative_rodent_polling - Consent Form.csv")
consent_qual$id <- 1:nrow(consent_qual) #give respondents IDs, since they no longer have them in the deidentified dataset.
consent_qual<-dplyr::select(consent_qual, -c("prolific_id"))
consent_qual<-consent_qual %>% relocate(id) #move id to first column
fwrite(consent_qual, "consent_qual.csv")

Results

A few quirks to keep in mind when interpreting the results:

State Bans

Support

152 (34%) of respondents supported a ban on rodenticides in their own state. The most common reason for supporting a state ban was a concern that individuals would eat the rodenticide (primary exposure) or consume an individual who had eaten the rodenticide (secondary exposure). Interestingly, the modal concern was on behalf of wildlife (31.4% of supporters), not pets (19.6%) or children (19%). Indeed, even concern for rodents (25.5%) was more common than concern for those near and dear. These findings suggest that some percentage of the minority of respondents who support the ban regard the risk to wild animals sufficient to oppose rodenticide.

stateban_qual <- read_csv("stateban_qual.csv", show_col_types = FALSE)

stateban_support<-subset(stateban_qual, Support== "Y") #153 supporters
stateban_support<-dplyr::select(stateban_support, -c("id": "Unclassifiable"))
stateban_support[is.na(stateban_support)] <- 0
stateban_support<-setNames(nm=c('Reason','Count'),stack(colSums(stateban_support))[2:1]);
stateban_support<-subset(stateban_support, Count>0)
stateban_support$Percentage<-round(((stateban_support$Count/153)), 3)#there were 153 supporters
stateban_support$Percentage<-percent(stateban_support$Percentage)
stateban_support[order(stateban_support$Count, decreasing = TRUE),]
ggplot(stateban_support, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Oppose

185 (41.2%) respondents oppose a ban on rodenticides in their state. Far and away the most common reason for opposing the ban was a belief that rodenticides are necessary for eliminating rodent infestations (35.7% of opposers). Other respondents similarly argued that rodenticides are more efficient (8.1% of opposers) or are otherwise better than whatever would replace rodenticides (4.3%). 15.1% of opposers conceded the risks of rodenticides while arguing that professional pest managers can adequately mitigate those risks. The belief that rodenticides are indispensable mirrors the fact that the second most common reason for supporting a state ban was a belief that there are other methods available that are sufficient for managing rodent populations (26.1% of ban supporters). Potentially, convincing respondents that efficient alternatives to rodenticide exist may be the best way to turn people against it.

stateban_oppose<-subset(stateban_qual, Oppose== "Y") #185 opposers
stateban_oppose<-dplyr::select(stateban_oppose, -c("id": "Unclassifiable"))
stateban_oppose[is.na(stateban_oppose)] <- 0
stateban_oppose<-setNames(nm=c('Reason','Count'),stack(colSums(stateban_oppose))[2:1]);
stateban_oppose<-subset(stateban_oppose, Count>0)
stateban_oppose$Percentage<-round(((stateban_oppose$Count/185)), 3)#there were 185 opposers
stateban_oppose$Percentage<-percent(stateban_oppose$Percentage)
stateban_oppose[order(stateban_oppose$Count, decreasing = TRUE),]
ggplot(stateban_oppose, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Neither Support Nor Oppose

95(21.1%) of respondents neither supported nor opposed a rodenticide ban in their own state. Unsurprisingly, the most common reason for neither supporting nor opposing a state ban on rodenticides was that respondents felt as though they needed more information. Less common reasons appear to be reasons that were also mentioned by supporters and opposers of state bans. This suggests that the concerns of the potentially “persuadable middle” do not differ from partisans, beyond the fact ban supporters probably care a lot more about wildlife welfare.

stateban_neither<-subset(stateban_qual, `No opinion`== "Y"|`Opinion in the middle` == "Y") #95
stateban_neither<-dplyr::select(stateban_neither, -c("id": "Unclassifiable"))
stateban_neither[is.na(stateban_neither)] <- 0
stateban_neither<-setNames(nm=c('Reason','Count'),stack(colSums(stateban_neither))[2:1]);
stateban_neither<-subset(stateban_neither, Count>0)
stateban_neither$Percentage<-round(((stateban_neither$Count/95)), 3)#there were 95 neithers
stateban_neither$Percentage<-percent(stateban_neither$Percentage)
stateban_neither[order(stateban_neither$Count, decreasing = TRUE),]
ggplot(stateban_neither, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

State Preemption Repeals

Support

189 (42%) respondents supported repealing state preemption of pesticides in their own state. The most common reason was that getting rid of preemption allowed more flexibility for responding to local circumstances (32% of repeal supporters). Similar reasons included that local governments have better knowledge of their jurisdiction (5%) and that local governments are more accountable than are state governments to their constituents (12%). The second most common reason appears to be instrumental: 21% of opposers simply want rodenticide banned, and repealing state preemption is a means to facilitating bans.

Note that there were a couple respondents from the pilot dataset whose close-ended response was “oppose,” even though their open-ended response indicated that they supported repealing state preemption. This is likely due to confusion about whether they were indicating support for state preemption or for repealing it. Fortunately, the confusion does not appear to be widespread, but it should instill additional uncertainty about the estimates of support and opposition to repealing state preemption based on close-ended responses.

statepreemption_qual <- read_csv("statepreemption_qual.csv", show_col_types = FALSE)
statepreemption_support<-subset(statepreemption_qual, Support== "Y") #189 supporters
statepreemption_support<-dplyr::select(statepreemption_support, -c("id": "Unclassifiable"))
statepreemption_support[is.na(statepreemption_support)] <- 0
statepreemption_support<-setNames(nm=c('Reason','Count'),stack(colSums(statepreemption_support))[2:1]);
statepreemption_support<-subset(statepreemption_support, Count>0)
statepreemption_support$Percentage<-round(((statepreemption_support$Count/189)), 3)#there were 189 supporters
statepreemption_support$Percentage<-percent(statepreemption_support$Percentage)
statepreemption_support[order(statepreemption_support$Count, decreasing = TRUE),]
ggplot(statepreemption_support, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Oppose

140 (31.1%) of respondents opposed repealing the state preemption of pesticides in their own state. The most common reason is a desire to keep rodenticides legal (22.9% of opposers). The second most common reason is a concern with non-uniform rodenticide laws within the state (20%). This is noteworthy because the pest management industry frequently cites the potential legal and financial costs of a “regulatory patchwork” as a core reason for favoring state preemption of pesticides. Although one could doubt just how inconvenient it actually is for there for different towns within a state to have different laws regarding rodenticide, our findings show that many ordinary people are sympathetic to the industry’s concern.

Again, there are a handful of people who must have found the fact that a repeal is a negative and support is a positive, as their close-ended response indicated support for repealing state preemption, despite the fact that their open-ended response clearly indicated opposition.

statepreemption_oppose<-subset(statepreemption_qual, Oppose== "Y") #140 opposers
statepreemption_oppose<-dplyr::select(statepreemption_oppose, -c("id": "Unclassifiable"))
statepreemption_oppose[is.na(statepreemption_oppose)] <- 0
statepreemption_oppose<-setNames(nm=c('Reason','Count'),stack(colSums(statepreemption_oppose))[2:1]);
statepreemption_oppose<-subset(statepreemption_oppose, Count>0)
statepreemption_oppose$Percentage<-round(((statepreemption_oppose$Count/140)), 3)#there were 140 opposers
statepreemption_oppose$Percentage<-percent(statepreemption_oppose$Percentage)
statepreemption_oppose[order(statepreemption_oppose$Count, decreasing = TRUE),]
ggplot(statepreemption_oppose, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Neither Support Nor Oppose

78 (17.4%) of respondents neither supported nor opposed repealing state preemption, mostly claiming that they needed more information to decide. Consumer freedom to use rodenticides (11.5%) loomed larger than a concern with non-uniformity (3.8%) for neither/nor respondents.

statepreemption_neither<-subset(statepreemption_qual, `No opinion`== "Y"|`Opinion in the middle` == "Y") #78
statepreemption_neither<-dplyr::select(statepreemption_neither, -c("id": "Unclassifiable"))
statepreemption_neither[is.na(statepreemption_neither)] <- 0
statepreemption_neither<-setNames(nm=c('Reason','Count'),stack(colSums(statepreemption_neither))[2:1]);
statepreemption_neither<-subset(statepreemption_neither, Count>0)
statepreemption_neither$Percentage<-round(((statepreemption_neither$Count/78)), 3)#there were 78 neithers
statepreemption_neither$Percentage<-percent(statepreemption_neither$Percentage)
statepreemption_neither[order(statepreemption_neither$Count, decreasing = TRUE),]
ggplot(statepreemption_neither, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Municipal Bans

Support

228 (50.8%) of respondents favored a municipal ban of rodenticide in their own town. The most common reason is that the ban would reduce rodenticide use while still allowing individuals freedom to use rodenticide if they need to (20.2% among supporters). Thus, the ban may strike supporters as a good compromise, a notion explicitly mentioned by 4 supporters. Only one respondent gave the wonkish argument that local bans would serve as a testing ground for whether other rodent controls methods are sufficient.

localban_qual <- read_csv("localban_qual.csv", show_col_types = FALSE)

localban_support<-subset(localban_qual, `Support ban`== "Y") #228 supporters
localban_support<-dplyr::select(localban_support, -c("id": "Unclassifiable"))
localban_support[is.na(localban_support)] <- 0
localban_support<-setNames(nm=c('Reason','Count'),stack(colSums(localban_support))[2:1]);
localban_support<-subset(localban_support, Count>0)
localban_support$Percentage<-round(((localban_support$Count/228)), 3)#there were 228 supporters
localban_support$Percentage<-percent(localban_support$Percentage)
localban_support[order(localban_support$Count, decreasing = TRUE),]
ggplot(localban_support, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Oppose

103 (22.9%) of respondents opposed a municipal ban on rodenticides in their own town. The most common reason (53.4% of opposers) was a belief that rodenticide is necessary for managing rodent infestations. However, some opposition was due to a belief that rodenticide should also be banned on private property (9.7%), or that the rules should be consistent across public and private property (5.8%). So, not all opposition to municipal bans reflects a positive attitude towards rodenticides.

localban_oppose<-subset(localban_qual, `Oppose ban`== "Y") #103 opposers
localban_oppose<-dplyr::select(localban_oppose, -c("id": "Unclassifiable"))
localban_oppose[is.na(localban_oppose)] <- 0
localban_oppose<-setNames(nm=c('Reason','Count'),stack(colSums(localban_oppose))[2:1]);
localban_oppose<-subset(localban_oppose, Count>0)
localban_oppose$Percentage<-round(((localban_oppose$Count/103)), 3)#there were 103 opposers
localban_oppose$Percentage<-percent(localban_oppose$Percentage)
localban_oppose[order(localban_oppose$Count, decreasing = TRUE),]
ggplot(localban_oppose, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Neither Support Nor oppose

102 (22.7%) respondents neither supported nor opposed a municipal rodenticide ban in their own town, mostly because they wanted more information first. The most common reason mentioned in favor of the ban among neither/nor respondents was maintaining consumer freedom (10.8%); examination of these responses shows that people mostly view a ban that does not affect them personally as none of their business. A similar sentiment explains the 8.8% of respondents who view the decision to stop using rodenticides in public spaces as up to the government. It seems unlikely that these individuals would vocally oppose a municipal ban in their towns.

localban_neither<-subset(localban_qual, `No opinion`== "Y"|`Opinion in the middle` == "Y") #102 neither
localban_neither<-dplyr::select(localban_neither, -c("id": "Unclassifiable"))
localban_neither[is.na(localban_neither)] <- 0
localban_neither<-setNames(nm=c('Reason','Count'),stack(colSums(localban_neither))[2:1]);
localban_neither<-subset(localban_neither, Count>0)
localban_neither$Percentage<-round(((localban_neither$Count/102)), 3)#there were 102 neithers
localban_neither$Percentage<-percent(localban_neither$Percentage)
localban_neither[order(localban_neither$Count, decreasing = TRUE),]
ggplot(localban_neither, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Lid-lock Ordinances

Support

279 (62.1%) of respondents supported an ordinance to lock dumpsters in their own town. Because the lid-lock ordinance was the only legislative proposal that was not regulating rodenticide use, we provided common pro and con arguments so that the relevance to rodenticide use would be more clear. In particular, respondents read the following:

“A ‘lid-lock’ ordinance is a law that requires businesses to use dumpster lids that close tightly and to lock them after use. Proponents of lid-lock ordinances argue that they reduce the number of rodents who are attracted to public spaces. Opponents of lid-lock ordinances argue that it is burdensome to repeatedly unlock and lock dumpsters, and that people just throw trash on top of locked dumpsters.”

Providing these talking points may have caused respondents to mimic them, leading to higher endorsements of these arguments than respondents would spontaneously produce. For example, the most common argument in favor of the lid-lock ordinance was the “pro” argument we presented– that the ordinance would reduce the presence of rodents (33% of supporters).

On the other hand, providing the pro and con arguments that respondents are likely to encounter in real life may lead to more ecologically valid results, as there is less concern that respondents would change their mind once they gain greater exposure to talking points on both sides of the issue. (Although this argument assumes that all of the persuasive arguments have been mentioned within the survey setting, which may not be true.) Furthermore, respondents did produce novel attitudes toward the lid-lock ordinance. For instance, 16.1% of supporters acknowledged that it would be burdensome to comply with (9.7% of supporters said that compliance would be easy), but would be worth the effort and is part of being a good citizen. 14.3% of respondents viewed the ordinance as a safer alternative to using rodenticide to manage rodents.

lidlock_qual <- read_csv("lidlock_qual.csv", show_col_types = FALSE)
lidlock_support<-subset(lidlock_qual, `Support ordinance`== "Y") #279 supporters
lidlock_support<-dplyr::select(lidlock_support, -c("id": "Unclassifiable"))
lidlock_support[is.na(lidlock_support)] <- 0
lidlock_support<-setNames(nm=c('Reason','Count'),stack(colSums(lidlock_support))[2:1]);
lidlock_support<-subset(lidlock_support, Count>0)
lidlock_support$Percentage<-round(((lidlock_support$Count/279)), 3)#there were 279 supporters
lidlock_support$Percentage<-percent(lidlock_support$Percentage)
lidlock_support[order(lidlock_support$Count, decreasing = TRUE),]
ggplot(lidlock_support, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Oppose

113 (25.1%) of respondents were opposed to a lid-lock ordinance. The two most commonly reported arguments against it– (a) that people would not follow procedure, instead putting trash near or on top of locked dumpsters (47.8%), and (b) that compliance would be too effortful (22.1%) –were also on the “con” arguments we presented in the description of the legislation. Lack of compliance appears to be the more persuasive argument of the two, though. Success stories of lid-lock ordinances in other jurisdictions might be able to combat the perception that a lid-lock ordinance would not reduce the trash available to rodents.

lidlock_oppose<-subset(lidlock_qual, `Oppose ordinance`== "Y") #113 opposers
lidlock_oppose<-dplyr::select(lidlock_oppose, -c("id": "Unclassifiable"))
lidlock_oppose[is.na(lidlock_oppose)] <- 0
lidlock_oppose<-setNames(nm=c('Reason','Count'),stack(colSums(lidlock_oppose))[2:1]);
lidlock_oppose<-subset(lidlock_oppose, Count>0)
lidlock_oppose$Percentage<-round(((lidlock_oppose$Count/113)), 3)#there were 113 opposers
lidlock_oppose$Percentage<-percent(lidlock_oppose$Percentage)
lidlock_oppose[order(lidlock_oppose$Count, decreasing = TRUE),]
ggplot(lidlock_oppose, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")

Neither Support Nor Oppose

51 (11.4%) respondents neither supported nor opposed lid-lock ordinances. There was no discernible pattern to the arguments, beyond that they were similar to the arguments given by those with a definite opinion, suggesting that the underlying concerns are the same.

lidlock_neither<-subset(lidlock_qual, `No opinion`== "Y"|`Opinion in the middle` == "Y") #51 neithers
lidlock_neither<-dplyr::select(lidlock_neither, -c("id": "Unclassifiable"))
lidlock_neither[is.na(lidlock_neither)] <- 0
lidlock_neither<-setNames(nm=c('Reason','Count'),stack(colSums(lidlock_neither))[2:1]);
lidlock_neither<-subset(lidlock_neither, Count>0)
lidlock_neither$Percentage<-round(((lidlock_neither$Count/51)), 3)#there were 51 neithers
lidlock_neither$Percentage<-percent(lidlock_neither$Percentage)
lidlock_neither[order(lidlock_neither$Count, decreasing = TRUE),]
ggplot(lidlock_neither, aes(x = Reason, y = Count, fill = Reason)) +geom_bar(colour = "black", stat = "identity")+
  theme(axis.text.x=element_blank(),
        axis.ticks.x=element_blank() )+
  geom_text(aes(label = Percentage),  vjust = -.50, size = 2.5,colour = "black")