创建具有多个列名作为变量的种族变量
Creating an Ethnicity Variable with Multiple Column Names as Variables
我有一个调查数据集,其中包括自我报告的种族。参与者可以 select 任意多的种族。数据结构如下所示:
Hispanic English Indian
1 NA NA
NA 1 NA
NA NA 1
NA 1 1
1 1 1
我想要做的是创建一个新的分类种族变量,其中列名代替上面的 1。此外,如果某人 select 不止一个种族,那么分类种族变量应该包括两者,如下所示:
Hispanic English Indian Ethnicity
1 NA NA Hispanic
NA 1 NA English
NA NA 1 Indian
NA 1 1 English_Indian
1 1 1 Hispanic_English_Indian
我们可以使用 apply
遍历行 (MARGIN = 1
),然后 paste
不是 NA[=17 的行值的 names
=]
df1$Ethnicity <- apply(df1, 1, function(x)
paste(names(x)[!is.na(x)], collapse= "_"))
-输出
df1
Hispanic English Indian Ethnicity
1 1 NA NA Hispanic
2 NA 1 NA English
3 NA NA 1 Indian
4 NA 1 1 English_Indian
5 1 1 1 Hispanic_English_Indian
数据
df1 <- structure(list(Hispanic = c(1L, NA, NA, NA, 1L),
English = c(NA,
1L, NA, 1L, 1L), Indian = c(NA, NA, 1L, 1L, 1L)),
class = "data.frame", row.names = c(NA,
-5L))
我有一个调查数据集,其中包括自我报告的种族。参与者可以 select 任意多的种族。数据结构如下所示:
Hispanic English Indian
1 NA NA
NA 1 NA
NA NA 1
NA 1 1
1 1 1
我想要做的是创建一个新的分类种族变量,其中列名代替上面的 1。此外,如果某人 select 不止一个种族,那么分类种族变量应该包括两者,如下所示:
Hispanic English Indian Ethnicity
1 NA NA Hispanic
NA 1 NA English
NA NA 1 Indian
NA 1 1 English_Indian
1 1 1 Hispanic_English_Indian
我们可以使用 apply
遍历行 (MARGIN = 1
),然后 paste
不是 NA[=17 的行值的 names
=]
df1$Ethnicity <- apply(df1, 1, function(x)
paste(names(x)[!is.na(x)], collapse= "_"))
-输出
df1
Hispanic English Indian Ethnicity
1 1 NA NA Hispanic
2 NA 1 NA English
3 NA NA 1 Indian
4 NA 1 1 English_Indian
5 1 1 1 Hispanic_English_Indian
数据
df1 <- structure(list(Hispanic = c(1L, NA, NA, NA, 1L),
English = c(NA,
1L, NA, 1L, 1L), Indian = c(NA, NA, 1L, 1L, 1L)),
class = "data.frame", row.names = c(NA,
-5L))