从现有数据添加新列的ifelse语句错误(ifelse statement error for adding new column from existing data)

系统教程 行业动态 更新时间:2024-06-14 16:59:47
从现有数据添加新列的ifelse语句错误(ifelse statement error for adding new column from existing data)

我有一个包含两列的数据集,我想将它们组合成一个列。

这是一个例子:

newdata<-data.frame(Tow.y=c(21,"NA","NA","NA",22,"NA","NA"),Tow=c("NA","NA","NA",21,"NA","NA",22)) newdata$Tow.y<-as.numeric(as.character(newdata$Tow.y)) newdata$Tow<-as.numeric(as.character(newdata$Tow)) newdata Tow.y Tow 1 21 NA 2 NA NA 3 NA NA 4 NA 21 5 22 NA 6 NA NA 7 NA 22

我想要的是让另一列从其他两列的每一行获取非NA值,并将所有其他行与NA作为NA。

像这样

newdata Tow.y Tow Station 1 21 NA 21 2 NA NA NA 3 NA NA NA 4 NA 21 21 5 22 NA 22 6 NA NA NA 7 NA 22 22

我以为我可以使用ifelse语句,但它不起作用。 只有两列中的一列被添加到新列中。

示例ifelse语句:

newdata$Station<-ifelse(newdata$Tow.y<0 & is.na(newdata$Tow), newdata$Tow.y, ifelse(is.na(newdata$Tow.y) & is.na(newdata$Tow), "NA", ifelse(is.na(newdata$Tow.y) & newdata$Tow<0, newdata$Tow, "check")))

我已经尝试了,如果代码没有运气。

I have a dataset with two columns and I would like to combine them into a single column.

Here is an example:

newdata<-data.frame(Tow.y=c(21,"NA","NA","NA",22,"NA","NA"),Tow=c("NA","NA","NA",21,"NA","NA",22)) newdata$Tow.y<-as.numeric(as.character(newdata$Tow.y)) newdata$Tow<-as.numeric(as.character(newdata$Tow)) newdata Tow.y Tow 1 21 NA 2 NA NA 3 NA NA 4 NA 21 5 22 NA 6 NA NA 7 NA 22

What I would like is to have another column that takes the non NA values from each row for the other two columns and leaves all of the other rows with NAs as NAs.

Like this

newdata Tow.y Tow Station 1 21 NA 21 2 NA NA NA 3 NA NA NA 4 NA 21 21 5 22 NA 22 6 NA NA NA 7 NA 22 22

I thought I could use an ifelse statement, but it is not working. Only one of the two columns is being added to the new column.

Example ifelse statement:

newdata$Station<-ifelse(newdata$Tow.y<0 & is.na(newdata$Tow), newdata$Tow.y, ifelse(is.na(newdata$Tow.y) & is.na(newdata$Tow), "NA", ifelse(is.na(newdata$Tow.y) & newdata$Tow<0, newdata$Tow, "check")))

I have tried and and if with no luck in the code.

最满意答案

我们可以使用coalesce

library(tidyverse) newdata %>% mutate(Station = coalesce(Tow.y, Tow)) # Tow.y Tow Station #1 21 NA 21 #2 NA NA NA #3 NA NA NA #4 NA 21 21 #5 22 NA 22 #6 NA NA NA #7 NA 22 22

We can use coalesce

library(tidyverse) newdata %>% mutate(Station = coalesce(Tow.y, Tow)) # Tow.y Tow Station #1 21 NA 21 #2 NA NA NA #3 NA NA NA #4 NA 21 21 #5 22 NA 22 #6 NA NA NA #7 NA 22 22

更多推荐

本文发布于:2023-04-17 09:00:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/dzcp/a30307ad1ff07f8c315bf40d76a84a96.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语句   错误   数据   ifelse   statement

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!