假设存在来自调查的数据帧
race=Black race=White race=Hispanic
T F F
T F F
F T F
...
在这种情况下,每一列都是可以具有F
的值T
的向量。此外,T
在每个向量中的位置将不重叠。我想把这个矢量组合起来,这样结果就会是
column: race
Black
Black
White
...
有简单的方法吗?
您可以使用dplyr
包中的mutate
和case_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 ~ ""))
如果您的变量是characters
和string
值,那么您可以运行
Mydata <- Mydata %>%
mutate(race = case_when(Black == "T" ~ "Black",
White == "T" ~ "White",
Hispanic == "T" ~ "Hispanic",
TRUE ~ ""))