我有兴趣将非互斥的种族类别重新编码为互斥的种族类别。
这篇文章对于使用 baseR 很有帮助,但我想知道是否有一个简洁的版本可以做到这一点: 将非互斥变量重新编码为互斥变量 这篇文章几乎很有帮助,但并不完全适用: 根据条件(互斥类别)将不同的虚拟变量组合成单个类别变量?
以下是如何设置数据的示例:
“1”表示参与者勾选了此答案。 “0”表示参与者没有勾选答案。
我想创建一个名为“RaceCount”的新变量,它将 1 的出现次数相加,如果该值大于 1,则该值可以算作一个名为“Multiracial”的新值。如果计数仅为“1”,则该值将恰好与参与者的回答相匹配。有什么方法可以使用 tidy 来使用它吗?
我尝试过类似的方法,但我不断得到奇怪的计数:
df <- df %>%
group_by(White, Asian, Black) %>% mutate(RaceCount = n())
我正在设想这样的事情:
ID White Black Asian RaceCount
1 1 0 0 White
2 1 0 0 White
3 1 0 0 White
4 1 0 1 Multiracial
5 1 0 1 Multiracial
6 0 0 1 Asian
7 0 1 0 Black
8 0 1 0 Black
9 1 0 0 White
10 0 1 0 Black
cbind(df,
Race = ifelse(rowSums(df[-1]) > 1, "Multiracial", names(df[-1])[max.col(df[-1])]))
ID White Black Asian Race
1 1 1 0 0 White
2 2 1 0 0 White
3 3 1 0 0 White
4 4 1 0 1 Multiracial
5 5 1 0 1 Multiracial
6 6 0 0 1 Asian
7 7 0 1 0 Black
8 8 0 1 0 Black
9 9 1 0 0 White
10 10 0 1 0 Black