r - 使用 ifelse 合并 2 列删除变量 R
问题描述
我正在尝试将我创建的男性和女性列合并为一列。我尝试使用我在堆栈上找到的一些答案,但我查询的第二个性别被排除在外。
构建数据框:
ID <- 1:10
SPAYDT <- c("", "2011-12-01", "", "2006-05-01", "", "", "", "", "", "")
SPAYDTU <- c(1, NA, NA, NA, NA, NA, NA, NA, NA, NA)
NEUTDT <- c("", "", "", "", "", "", "2013-03-01", "", "", "")
NEUTDTU <- c(NA, NA, NA, NA, NA, NA, NA, 1, NA, 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, "Male", NA))
df$female <- ifelse(SPAYDT!="", "Female",
ifelse(SPAYDTU==1, "Female", NA))
df$sex <- ifelse(!is.na(df$female), df$female, df$male)
和
df$sex <- ifelse(SPAYDT!="", "Female",
ifelse(SPAYDTU==1, "Female",
ifelse(NEUTDT!="", "Male",
ifelse(NEUTDTU=1, "Male", NA))))
但是,无论我做什么,最后的性别栏都只有一种性别。我确保附加了我的 df 以将列名用作变量。我尝试重新启动 R 并再次运行设置代码。我只是不知道为什么 ifelse 语句忽略了第二性输入。
任何帮助是极大的赞赏!
澄清:在我正在使用的较大数据框中,我已经完成了数据清理,以便每个 ID 仅对应于 1 种性别。很抱歉代码中的错误。
期望的输出:
ID <- 1:10
SPAYDT <- c("", "2011-12-01", "", "2006-05-01", "", "", "", "", "", "")
SPAYDTU <- c(1, NA, NA, NA, NA, NA, NA, NA, NA, NA)
NEUTDT <- c("", "", "", "", "", "", "2013-03-01", "", "", "")
NEUTDTU <- c(NA, NA, NA, NA, NA, NA, NA, 1, NA, NA)
SEX <- c("Female", "Female", NA, "Female", NA, NA, "Male", "Male", NA, NA)
df <- as.data.frame(cbind(ID, SPAYDT, SPAYDTU, NEUTDT, NEUTDTU, SEX))
df
解决方案
这就是你所追求的吗?
ID <- 1:10
SPAYDT <- c("", "2011-12-01", "", "2006-05-01", "", "", "", "", "", "")
SPAYDTU <- c(1,NA,NA,NA,NA,NA,NA,NA,NA,NA)
NEUTDT <- c("", "", "", "", "", "", "2013-03-01", "", "", "")
NEUTDTU <- c(NA,NA,NA,1,NA,NA,NA,NA,NA,NA)
df <- data.frame(ID, SPAYDT, SPAYDTU, NEUTDT, NEUTDTU)
df %>%
mutate(
sex = case_when(
NEUTDT!="" | NEUTDTU==1 ~ "Male",
SPAYDT!="" | SPAYDTU==1 ~ "Female",
TRUE ~ NA_character_))
推荐阅读
- c++ - 打开 CV:为 Mac M1 编译时未定义 cv::LineIterator
- javascript - 在 jsp 页面中使用 val() 方法设置更多值
- c - 尽管 glxinfo 断言可用,但 OpenGL 核心配置文件不可用
- jython - 将数据类型添加到参数时,jython 2.7.2 出现语法错误
- c++ - 如何加入两个结构数组?
- reactjs - 如何在 TypeScript 中定义一个简单的字符串数组
- solidity - 如何获取 tron 智能合约的 balanceOf
- java - 如何将枚举类型传递给 lambda
- database - 如何将此十六进制或二进制数据转换回原始图像?
- json - 你能帮我解决 VSCode 中 JSON 设置中的这两个错误吗?