【发布时间】:2019-03-04 17:01:27
【问题描述】:
我有一个数据框
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))
我正在根据人口普查数据比较多个种族。我想做的是创建一个新变量,根据该行是否包含除“白人或高加索人”以外的任何内容来说明该人是否为少数群体。因此,如果有人将自己列为“太平洋岛民”,他们将在新变量中列为“少数派”。如果他们仅被列为“白人或高加索人”,他们将是“多数人”。请注意,其中一些单元格包含种族组合,包括“白人或高加索人”以及其他一些种族。任何拥有多个种族的人仍应被视为“少数派”
【问题讨论】:
-
您可以列出您的条件并使用
ifelse和grep添加新列 -
我想我会使用 grep,但是 grep 是否有一个参数可以让您匹配整个单元格内容而不是只匹配其中的一部分?
-
是的,你可以用 ^ 和 $ 包围你的模式,也可以将参数读出到
grep -
这里还需要
grep吗?如果您只关心“白人或高加索人”,您可以不简单地做类似的事情(我在这里包括 dplyr,因为您的标签是变异的)your.df <- your.df %>% mutate(Race2=ifelse(Race=='White or Caucasian','Majority','Minority')