Как я могу объединить два столбца в R, когда переменные не являются числовыми? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть два столбца в таблице данных в R.Один - раса, а другой - этническая принадлежность.Я хотел бы объединить эти два столбца, чтобы сделать один новый столбец с пометкой R / E.Однако мне трудно объединить переменные, потому что я хочу при определенных обстоятельствах заменить переменную одного столбца из другого, не меняя переменные для всего столбца.

Допустим, у меня есть эти два столбца.

Ethnicity <- c("Hispanic or Latino", "Not Hispanic or Latino", "Not Hispanic or Latino", "Neither", "Neither")

Race <- c("Neither", "Asian", "Neither", "Asian", "Neither")

Желаемый столбец (R / E): c("Hispanic or Latino", "Asian", "Not Hispanic or Latino", "Asian", "Neither")

Я хочу создать один столбец, в котором я могу соответствующим образом объединить эти переменные.Я пытался использовать ifelse, но я не уверен в правильном синтаксисе.

Я в основном хочу сказать: Если этническая принадлежность = "Латиноамериканец или латиноамериканец" -> R / E = "Латиноамериканец или латиноамериканец", Если этническая принадлежность= "Неизвестно" или этническая принадлежность = "Не латиноамериканец или латиноамериканец", затем отметьте "Раса"

Могу ли я использовать ifelse для этого?Или есть другая функция, которую я могу использовать для достижения этой цели?

Я не уверен, куда идти

NewData$R/E <-ifelse(NewData$Etn<= Hispanic or Latino, "Hispanic or Latino",  ifelse(NewData$Etn<= Neither,

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Вот способ достижения желаемого столбца (R / E). Я назвал его R_E для удобства чтения (редактор R не принимает R / E в качестве имени переменной).

Ethnicity <- c("Hispanic or Latino", "Not Hispanic or Latino", "Not Hispanic or Latino", "Neither", "Neither")

Race <- c("Neither", "Asian", "Neither", "Asian", "Neither")

R_E <- c(paste0(Ethnicity,", ", Race))

За 2 часть вашего вопроса. Не могли бы вы уточнить, какую информацию вы хотите отфильтровать и какое входное значение?

0 голосов
/ 16 апреля 2019

Если 2 вектора имеют одинаковую длину (например, если они представляют собой 2 столбца из data.frame), вы можете просто использовать правильно отформатированный оператор ifelse:

ifelse(Race == 'Neither', Ethnicity, Race)

[1] "Hispanic or Latino"     "Asian"                 
[3] "Not Hispanic or Latino" "Asian"                 
[5] "Neither"

Тем не менее, будьте осторожны: если векторы не одинаковой длины, более короткий будет повторяться, чтобы сделать его одинаковой длины, что приведет к странным результатам, как это:

ifelse(Race == 'Neither', c("A","B","C"), Race)

[1] "A"     "Asian" "C"     "Asian" "B"    
...