R 如何在替换每个向量中的元素时将多个向量合并为一个向量

R 如何在替换每个向量中的元素时将多个向量合并为一个向量,r,loops,vector,R,Loops,Vector,假设有一个来自调查的数据框架 race=Black race=White race=Hispanic T F F T F F F T F ... 在这种情况下,每一列都是一个向量,可以具有F的值T。 此外,T在每个向量中的位置不会重叠。 我想合并这个向量,这样结果就会 column: race Black Black White ... 有一个简单的方

假设有一个来自调查的数据框架

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\u

首先,加载包和示例数据:

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)
如果变量是
字符
字符串
值,则可以运行


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

Mydata%
当(黑色==“T”~“黑色”,
白色==“T”~“白色”,
拉美裔==“T”~“拉美裔”,
真~“”)

您的值都是逻辑类型的吗?如果是这样,请尝试
names(your_dataframe)[max.col(your_dataframe)]
如果不是,请共享
dput(head(your_dataframe))
的输出。您的条件可以简化为
Black~“Black”,White~“White”
等。假设OP像您一样处理逻辑。

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