基于可能因子的多种组合减少R中的因子数

时间:2019-03-03 06:50:34

标签: r

我有一些人口普查数据,人们可以将他们的种族列为一种或多种不同种族的组合。我们允许他们从这些选择中进行选择。

美洲印第安人

东亚

太平洋岛民

黑人或非裔美国人

白人或白人

西班牙裔或拉丁裔/ a

南亚人

中东

其他

如果要制作人种的列联表,结果数据将非常混乱,因为我在下面提供的示例中,数据输出将一个人列出了许多不同的种族。

structure(list(Race = structure(c(3L, 2L, 3L, 9L, 9L, 11L, 
5L, 11L, 3L, 3L, 3L, 3L, 7L, 3L, 11L, 5L, 9L, 10L, 9L, 10L, 2L, 
3L, 2L, 6L, 9L, 10L, 3L, 10L, 8L, 3L, 5L, 1L, 2L, 9L, 4L, 3L), .Label = c("Black or African American", 
"Black or African American,White or Caucasian", "East Asian", 
"East Asian,Pacific Islander", "Hispanic or Latino/a", "Other", 
"Pacific Islander", "South Asian", "White or Caucasian", "White or Caucasian,Hispanic or Latino/a", 
"White or Caucasian,Middle Eastern"), class = "factor")), class = "data.frame", row.names = c(NA, 
-36L))

为减少因素数量,我想将单元中具有多个种族的任何单元变为“混合”。像这样说“白人或白人,中东”的牢房应该混在一起。因为我的实际数据集非常庞大,使用gsub()之类的种族的多个不同组合,并输入所有组合以替换为“混合”,对我来说似乎并不可行。

1 个答案:

答案 0 :(得分:2)

为方便起见使用dplyr,但您可以使用base

data %>% 
  mutate(Race  = as.character(Race), 
         Race2 = replace(Race, grepl(",", Race), "Mixed"))