【问题标题】:Concatenate and Mutate Factors R连接和变异因子 R
【发布时间】: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))

我正在根据人口普查数据比较多个种族。我想做的是创建一个新变量,根据该行是否包含除“白人或高加索人”以外的任何内容来说明该人是否为少数群体。因此,如果有人将自己列为“太平洋岛民”,他们将在新变量中列为“少数派”。如果他们仅被列为“白人或高加索人”,他们将是“多数人”。请注意,其中一些单元格包含种族组合,包括“白人或高加索人”以及其他一些种族。任何拥有多个种族的人仍应被视为“少数派”

【问题讨论】:

  • 您可以列出您的条件并使用ifelsegrep 添加新列
  • 我想我会使用 grep,但是 grep 是否有一个参数可以让您匹配整个单元格内容而不是只匹配其中的一部分?
  • 是的,你可以用 ^ 和 $ 包围你的模式,也可以将参数读出到grep
  • 这里还需要grep吗?如果您只关心“白人或高加索人”,您可以不简单地做类似的事情(我在这里包括 dplyr,因为您的标签是变异的)your.df <- your.df %>% mutate(Race2=ifelse(Race=='White or Caucasian','Majority','Minority')

标签: r dplyr


【解决方案1】:

为什么不简单:

df %>% mutate(new_var = ifelse(Race=="White or Caucasian","Majority","Minority"))

【讨论】:

  • 太棒了!出于好奇,您是否也可以将其与 OR 表达式结合起来,例如 if "White or Caucasian" OR(|) "East Asian" then this row will be "Majority" else "Minority
  • @762 你可以做ifelse(Race %in% c("White or Caucasian","East Asian"),...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 2018-03-29
  • 1970-01-01
相关资源
最近更新 更多