[英]R: creating new variables combining mutate and case when
So, I need to create new variables measuring wether someone voted strategically in both 2017 and 2021. To that end, we have one variable with the preferred party (Q7) and two with the party the person actually voted for (Q11 for 2021 and Q14 for 2017).因此,我需要创建新变量来衡量某人在 2017 年和 2021 年是否进行了战略性投票。为此,我们有一个变量与首选政党(Q7)和两个与该人实际投票的政党(2021 年 Q11 和 Q14 2017 年)。 Unfortunately, some participants were not allowed to vote "Ich durfte noch nicht wählen" or voted for another party "Andere".I then tried to create the following code with the following goal:
不幸的是,一些参与者不允许投票“Ich durfte noch nicht wählen”或投票给另一方“Andere”。然后我尝试创建以下代码,目标如下:
If someone couldnt rememeber what he voted for -> assign 0如果有人不记得他投了什么票 -> 分配 0
When someone wasnt allowed to vote -> assign NA当某人不被允许投票时 -> 分配 NA
When someone voted strategically (either with one of the main parties or one of the others), so if Q7!=Q14 -> assign 1当有人战略性地投票时(与主要政党之一或其他政党之一),所以如果 Q7!=Q14 -> 分配 1
BTW_2021 <- BTW_2021 %>%
mutate(StrategischeWahl2021 = case_when(Q11 == "Ich kann mich nicht errinern" ~ "0",
Q7 == "Andere" ~ "0",
Q7 != Q11 ~ "1",#1=Ja
TRUE ~ "0")) %>% #0=Nein
mutate(StrategischeWahl2017 = case_when(Q14 == "Ich kann mich nicht errinern" ~ "0",
Q7 == "Andere" ~ "0",
Q14 == "Ich durfte noch nicht wählen." ~ "NA",
Q7!=Q14 ~"1", #1=Ja
TRUE~"0")) #0=Nein
Unfortunately, this didnt work.不幸的是,这没有用。 Now, when someone can´t remember what he has voted for, he is assigned a 1 instead of a zero.
现在,当有人不记得他投票的内容时,他会被分配一个 1 而不是 0。 Any insight in to how to fix that would be greatly appreciated;)
任何有关如何解决该问题的见解将不胜感激;)
The data:数据:
> BTW_2021 <- BTW_2021 %>%
+ select(Q7, Q11, Q14) %>%
+ slice_sample(n = 20)
> View(BTW_2021)
> dput(BTW_2021)
structure(list(Q7 = c("FDP", "Buendnis 90/Die Gruenen", "Buendnis 90/Die Gruenen",
"Buendnis 90/Die Gruenen", "FDP", "SPD", "Buendnis 90/Die Gruenen",
"Buendnis 90/Die Gruenen", "FDP", "Buendnis 90/Die Gruenen",
"FDP", "SPD", "SPD", "FDP", "FDP", "SPD", "Buendnis 90/Die Gruenen",
"CDU/CSU", "FDP", "FDP"), Q11 = c("Buendnis 90/Die Gruenen",
"Ich kann mich nicht erinnern", "Die Linke", "FDP", "FDP", "SPD",
"FDP", "Buendnis 90/Die Gruenen", "FDP", "Buendnis 90/Die Gruenen",
"FDP", "SPD", "SPD", "FDP", "FDP", "Buendnis 90/Die Gruenen",
"SPD", "CDU/CSU", "FDP", "Buendnis 90/Die Gruenen"), Q14 = c("Ich durfte noch nicht wählen.",
"Ich kann mich nicht erinnern.", "Ich durfte noch nicht wählen.",
"Ich kann mich nicht erinnern.", "Ich kann mich nicht erinnern.",
"SPD", "FDP", "CDU/CSU", "FDP", "Buendnis 90/Die Gruenen", "FDP",
"SPD", "Ich durfte noch nicht wählen.", "Ich durfte noch nicht wählen.",
"Ich durfte noch nicht wählen.", "Die Linke", "SPD", "Ich durfte noch nicht wählen.",
"Ich durfte noch nicht wählen.", "Ich durfte noch nicht wählen."
)), row.names = c(NA, -20L), class = "data.frame")
the result:结果:
dput(BTW_2021)
structure(list(Q7 = c("FDP", "Buendnis 90/Die Gruenen", "Buendnis 90/Die Gruenen",
"Buendnis 90/Die Gruenen", "FDP", "SPD", "Buendnis 90/Die Gruenen",
"Buendnis 90/Die Gruenen", "FDP", "Buendnis 90/Die Gruenen",
"FDP", "SPD", "SPD", "FDP", "FDP", "SPD", "Buendnis 90/Die Gruenen",
"CDU/CSU", "FDP", "FDP"), Q11 = c("Buendnis 90/Die Gruenen",
"Ich kann mich nicht erinnern", "Die Linke", "FDP", "FDP", "SPD",
"FDP", "Buendnis 90/Die Gruenen", "FDP", "Buendnis 90/Die Gruenen",
"FDP", "SPD", "SPD", "FDP", "FDP", "Buendnis 90/Die Gruenen",
"SPD", "CDU/CSU", "FDP", "Buendnis 90/Die Gruenen"), Q14 = c("Ich durfte noch nicht wählen.",
"Ich kann mich nicht erinnern.", "Ich durfte noch nicht wählen.",
"Ich kann mich nicht erinnern.", "Ich kann mich nicht erinnern.",
"SPD", "FDP", "CDU/CSU", "FDP", "Buendnis 90/Die Gruenen", "FDP",
"SPD", "Ich durfte noch nicht wählen.", "Ich durfte noch nicht wählen.",
"Ich durfte noch nicht wählen.", "Die Linke", "SPD", "Ich durfte noch nicht wählen.",
"Ich durfte noch nicht wählen.", "Ich durfte noch nicht wählen."
), StrategischeWahl2021 = c("1", "1", "1", "1", "0", "0", "1",
"0", "0", "0", "0", "0", "0", "0", "0", "1", "1", "0", "0", "1"
), StrategischeWahl2017 = c("NA", "1", "NA", "1", "1", "0", "1",
"1", "0", "0", "0", "0", "NA", "NA", "NA", "1", "1", "NA", "NA",
"NA")), row.names = c(NA, -20L), class = "data.frame")
The expected result: changes for 2021 in row 2, for 2017 in the rows 2, 4, 5预期结果:2021 年第 2 行的变化,2017 年第 2、4、5 行的变化
dput(BTW_2021)
structure(list(Q7 = c("FDP", "Buendnis 90/Die Gruenen", "Buendnis 90/Die Gruenen",
"Buendnis 90/Die Gruenen", "FDP", "SPD", "Buendnis 90/Die Gruenen",
"Buendnis 90/Die Gruenen", "FDP", "Buendnis 90/Die Gruenen",
"FDP", "SPD", "SPD", "FDP", "FDP", "SPD", "Buendnis 90/Die Gruenen",
"CDU/CSU", "FDP", "FDP"), Q11 = c("Buendnis 90/Die Gruenen",
"Ich kann mich nicht erinnern", "Die Linke", "FDP", "FDP", "SPD",
"FDP", "Buendnis 90/Die Gruenen", "FDP", "Buendnis 90/Die Gruenen",
"FDP", "SPD", "SPD", "FDP", "FDP", "Buendnis 90/Die Gruenen",
"SPD", "CDU/CSU", "FDP", "Buendnis 90/Die Gruenen"), Q14 = c("Ich durfte noch nicht wählen.",
"Ich kann mich nicht erinnern.", "Ich durfte noch nicht wählen.",
"Ich kann mich nicht erinnern.", "Ich kann mich nicht erinnern.",
"SPD", "FDP", "CDU/CSU", "FDP", "Buendnis 90/Die Gruenen", "FDP",
"SPD", "Ich durfte noch nicht wählen.", "Ich durfte noch nicht wählen.",
"Ich durfte noch nicht wählen.", "Die Linke", "SPD", "Ich durfte noch nicht wählen.",
"Ich durfte noch nicht wählen.", "Ich durfte noch nicht wählen."
), StrategischeWahl2021 = c("1", "0", "1", "1", "0", "0", "1",
"0", "0", "0", "0", "0", "0", "0", "0", "1", "1", "0", "0", "1"
), StrategischeWahl2017 = c("NA", "0", "NA", "0", "0", "0", "1",
"1", "0", "0", "0", "0", "NA", "NA", "NA", "1", "1", "NA", "NA",
"NA")), row.names = c(NA, -20L), class = "data.frame")
There are a few issues:有几个问题:
case_when
evaluates (for StrategischeWahl2021). case_when
评估的方向(对于 StrategischeWahl2021)。 You need to move the Q7 != Q11
down.Q7 != Q11
向下移动。 Ie IE
BTW_2021_new <-
BTW_2021 %>%
mutate(StrategischeWahl2017 = case_when(Q14 == "Ich kann mich nicht erinnern." ~ "0",
Q7 == "Andere" ~ "0",
Q14 == "Ich durfte noch nicht wählen." ~ "NA", # Consider NA_character_
Q7 != Q14 ~ "1",
TRUE ~ "0")) %>%
mutate(StrategischeWahl2021 = case_when(Q11 == "Ich kann mich nicht erinnern" ~ "0",
Q7 == "Andere" ~ "0",
Q7 != Q11 ~ "1",#1=Ja
TRUE ~ "0"))
Output: Output:
Q7 Q11 Q14 StrategischeWahl2021 StrategischeWahl2017
1 FDP Buendnis 90/Die Gruenen Ich durfte noch nicht wählen. 1 NA
2 Buendnis 90/Die Gruenen Ich kann mich nicht erinnern Ich kann mich nicht erinnern. 0 0
3 Buendnis 90/Die Gruenen Die Linke Ich durfte noch nicht wählen. 1 NA
4 Buendnis 90/Die Gruenen FDP Ich kann mich nicht erinnern. 1 0
5 FDP FDP Ich kann mich nicht erinnern. 0 0
6 SPD SPD SPD 0 0
7 Buendnis 90/Die Gruenen FDP FDP 1 1
8 Buendnis 90/Die Gruenen Buendnis 90/Die Gruenen CDU/CSU 0 1
9 FDP FDP FDP 0 0
10 Buendnis 90/Die Gruenen Buendnis 90/Die Gruenen Buendnis 90/Die Gruenen 0 0
11 FDP FDP FDP 0 0
12 SPD SPD SPD 0 0
13 SPD SPD Ich durfte noch nicht wählen. 0 NA
14 FDP FDP Ich durfte noch nicht wählen. 0 NA
15 FDP FDP Ich durfte noch nicht wählen. 0 NA
16 SPD Buendnis 90/Die Gruenen Die Linke 1 1
17 Buendnis 90/Die Gruenen SPD SPD 1 1
18 CDU/CSU CDU/CSU Ich durfte noch nicht wählen. 0 NA
19 FDP FDP Ich durfte noch nicht wählen. 0 NA
20 FDP Buendnis 90/Die Gruenen Ich durfte noch nicht wählen. 1 NA
Check:查看:
> identical(BTW_2021_new$StrategischeWahl2017, BTW_2021_expected$StrategischeWahl2017)
[1] TRUE
> identical(BTW_2021_new$StrategischeWahl2021, BTW_2021_expected$StrategischeWahl2021)
[1] TRUE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.