r-如何将多个向量组合为一个,同时替换每个向量中的元素



假设存在来自调查的数据帧

race=Black   race=White   race=Hispanic
T            F            F
T            F            F
F            T            F
...

在这种情况下,每一列都是可以具有F的值T的向量。此外,T在每个向量中的位置将不重叠。我想把这个矢量组合起来,这样结果就会是

column: race
Black
Black
White
... 

有简单的方法吗?

您可以使用dplyr包中的mutatecase_when

首先,加载包和您的样本数据:

library(dplyr)
zz <- "Black White Hispanic
1        T    F        F
2        T    F        F
3        F    T        F"
Mydata <- read.table(text=zz, header = TRUE)

假设您的变量类型为logicals,您可以运行以下操作,如@markus在评论中所建议的:


Mydata <- Mydata %>% 
mutate(race = case_when(Black ~ "Black",
White ~ "White",
Hispanic ~ "Hispanic",
TRUE ~ ""))

如果您的变量是charactersstring值,那么您可以运行


Mydata <- Mydata %>% 
mutate(race = case_when(Black == "T" ~ "Black",
White == "T" ~ "White",
Hispanic == "T" ~ "Hispanic",
TRUE ~ ""))

最新更新