我有一些人口普查数据,人们可以将他们的种族列为一种或多种不同种族的组合。我们允许他们从这些选择中进行选择。
美洲印第安人
东亚
太平洋岛民
黑人或非裔美国人
白人或白人
西班牙裔或拉丁裔/ 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()
之类的种族的多个不同组合,并输入所有组合以替换为“混合”,对我来说似乎并不可行。
答案 0 :(得分:2)
为方便起见使用dplyr,但您可以使用base
data %>%
mutate(Race = as.character(Race),
Race2 = replace(Race, grepl(",", Race), "Mixed"))