如何解决合并/合并列根本不起作用
我终生无法找到一种方法来使此工作有效,而无需更改列的类或获得甚至不在原始列中的随机级别!
我有如下数据:
data <- structure(list(WHY = structure(1:4,.Label = c("WHY1","WHY2","WHY3","WHY4"),class = "factor"),HELP1 = structure(c(3L,NA,1L,2L),.Label = c("1","2","D/A"),HELP2 = c(NA,2L,NA)),class = "data.frame",row.names = c(NA,-4L))
我想做什么: 如果HELP2不是NA并且HELP1是D / A,则合并列而不更改类。
这是我尝试过的:
data$HELP3 <-
ifelse(
!is.na(data$HELP2) &
data$HELP1 == "D/A",data$HELP1,data$HELP2)
结果:
data
WHY HELP1 HELP2 HELP3
1 WHY1 D/A NA NA
2 WHY2 <NA> 2 NA
3 WHY3 1 NA NA
4 WHY4 2 NA NA
>
我将非常感谢您的帮助。我已经在堆栈上溢出了5个小时了,并且离完成这项工作还很近:(我对dyplr并不那么热,所以使用base r或其他任何东西都很棒!
解决方法
由于HELP2
和HELP1
具有不同的类,并且ifelse
也存在返回factor
类的向量的问题。但是,您可以在没有ifelse
且不更改列类的情况下执行此操作。
data$HELP3 <- data$HELP1
inds <- (!is.na(data$HELP2)) & data$HELP1 == "D/A"
data$HELP3[inds] <- data$HELP2[inds]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。