首页 > 解决方案 > 当变量不是数字时,如何组合 R 中的两列?

问题描述

我的数据表中有两列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,

标签: rif-statementmultiple-columns

解决方案


如果 2 个向量的长度相同(例如,如果它们是 data.frame 中的 2 列),则可以使用格式正确的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"    

推荐阅读