首页 > 解决方案 > 从一个变量的不同问题中收集相同的答案?

问题描述

我对 R 完全陌生,但是这里的时间不多了。在我的数据集中,我有来自几个国家的人回答他们最后投票给谁。来自不同国家的人有不同的问题,所以在每一列中,只有来自该国家的人有答案,其余的都是NA。我试图将所有投票给绿党的人都收集到一个变量中。到目前为止,我已成功使用 ifelse 将其编码为每个国家/地区的单独虚拟变量,但我似乎无法合并这些变量。所以现在我有一个德国的变量,德国选举中的绿色投票是 1,其他所有人都是 0。法国等地也是如此。但是我怎样才能在一个变量中收集所有这些信息?

感谢你的帮助。

标签: rvariablesif-statementmergetidyverse

解决方案


假设您的数据集看起来像这样......

> ctry <- c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)
> vote_ctry_1 <- c(1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0)
> vote_ctry_2 <- c(0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0)
> vote_ctry_3 <- c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0)
> 
> dd <- data.frame(ctry, vote_ctry_1, vote_ctry_2, vote_ctry_3)
> dd
   ctry vote_ctry_1 vote_ctry_2 vote_ctry_3
1     1           1           0           0
2     1           0           0           0
3     1           0           0           0
4     1           1           0           0
5     2           0           1           0
6     2           0           1           0
7     2           0           0           0
8     2           0           1           0
9     3           0           0           1
10    3           0           0           0
11    3           0           0           0
12    3           0           0           0

...然后只需添加虚拟变量:

> dd$vote_all <- vote_ctry_1 + vote_ctry_2 + vote_ctry_3
> dd
   ctry vote_ctry_1 vote_ctry_2 vote_ctry_3 vote_all
1     1           1           0           0        1
2     1           0           0           0        0
3     1           0           0           0        0
4     1           1           0           0        1
5     2           0           1           0        1
6     2           0           1           0        1
7     2           0           0           0        0
8     2           0           1           0        1
9     3           0           0           1        1
10    3           0           0           0        0
11    3           0           0           0        0
12    3           0           0           0        0

推荐阅读