我正在尝试将创建的男性和女性专栏合并为一栏。我尝试使用在堆栈中找到的一些答案,但排除了我查询的第二性行为。
构建数据框:
ID <- 1:10
SPAYDT <- c("","2011-12-01","","2006-05-01","")
SPAYDTU <- c(1,NA,NA)
NEUTDT <- c("","2013-03-01","")
NEUTDTU <- c(NA,1,NA)
df <- as.data.frame(cbind(ID,SPAYDT,SPAYDTU,NEUTDT,NEUTDTU))
df
目标是创建一个性别列,其格式设置为2级因子-男性和女性 如果SPAYDT或SPAYDTU中有值,则应为女性;如果NEUTDT或NEUTDTU中具有值,则应为男性。 我尝试过的:
- 使用嵌套的if-else语句构建一个性别列
- 制作两列,然后使用组合
df$male <- ifelse(NEUTDT!="","Male",ifelse(NEUTDTU=1,NA))
df$female <- ifelse(SPAYDT!="","Female",ifelse(SPAYDTU==1,NA))
df$sex <- ifelse(!is.na(df$female),df$female,df$male)
和
df$sex <- ifelse(SPAYDT!="",ifelse(NEUTDT!="",NA))))
但是,无论我做什么,最后的性别列都只有一种性别。我确保已附加我的df,以将列名用作变量。我尝试重新启动R并再次运行安装代码。我只是不知道为什么ifelse语句会忽略第二性行为输入。
非常感谢您的帮助!
说明: 在更大的数据框中,我正在完成数据清理,因此每个ID仅对应1个性别。抱歉代码中的错误。
所需的输出:
ID <- 1:10
SPAYDT <- c("",NA)
SEX <- c("Female",NEUTDTU,SEX))
df