使用NAs-R的条件语句填充dataframe中列的值
我有一个数据框,如下所示:使用NAs-R的条件语句填充dataframe中列的值,r,if-statement,conditional,na,R,If Statement,Conditional,Na,我有一个数据框,如下所示: Date FLOW Modelled Infilled 01-01-1992 1.856 1.900 NA 02-01-1992 1.523 1.500 NA 03-01-1992 NA 2.400 NA 04-01-1992 3.679 3.800 NA 我想用流量值填充填充柱。如果时间序列的FLOW列中有“NA”值,我想用Modeled列中的值替换这些
Date FLOW Modelled Infilled
01-01-1992 1.856 1.900 NA
02-01-1992 1.523 1.500 NA
03-01-1992 NA 2.400 NA
04-01-1992 3.679 3.800 NA
我想用流量值填充填充柱。如果时间序列的FLOW列中有“NA”值,我想用Modeled列中的值替换这些NAs
答案应该是这样的:
Date FLOW Modelled Infilled
01-01-1992 1.856 1.900 1.856
02-01-1992 1.523 1.500 1.523
03-01-1992 NA 2.400 2.400
04-01-1992 3.679 3.800 3.679
我在excel中有如下解决方案:
Infilled column =IF((FLOW="NA"),Modelled,FLOW)
我还没有找到一个在线解决方案来帮助我在R中编程。时间序列非常长,我有多个文件要做,所以循环可能是最合适的解决方案。我对R比较陌生,我不明白这一点。非常感谢您的帮助 您正在寻找
coalesce
library(tidyverse)
dat%>%
mutate(Infilled=coalesce(FLOW,Modelled))
Date FLOW Modelled Infilled
1 01-01-1992 1.856 1.9 1.856
2 02-01-1992 1.523 1.5 1.523
3 03-01-1992 NA 2.4 2.400
4 04-01-1992 3.679 3.8 3.679
在base R中,您可以执行以下操作:
transform(dat,Infilled=ifelse(is.na(FLOW),Modelled,FLOW))
Date FLOW Modelled Infilled
1 01-01-1992 1.856 1.9 1.856
2 02-01-1992 1.523 1.5 1.523
3 03-01-1992 NA 2.4 2.400
4 04-01-1992 3.679 3.8 3.679
您正在寻找
coalesce
library(tidyverse)
dat%>%
mutate(Infilled=coalesce(FLOW,Modelled))
Date FLOW Modelled Infilled
1 01-01-1992 1.856 1.9 1.856
2 02-01-1992 1.523 1.5 1.523
3 03-01-1992 NA 2.4 2.400
4 04-01-1992 3.679 3.8 3.679
在base R中,您可以执行以下操作:
transform(dat,Infilled=ifelse(is.na(FLOW),Modelled,FLOW))
Date FLOW Modelled Infilled
1 01-01-1992 1.856 1.9 1.856
2 02-01-1992 1.523 1.5 1.523
3 03-01-1992 NA 2.4 2.400
4 04-01-1992 3.679 3.8 3.679
我们可以使用
base R
dat$Infilled <- dat$FLOW
i1 <- is.na(dat$FLOW)
dat$Infilled[i1] <- dat$Modelled[i1]
我们可以使用
base R
dat$Infilled <- dat$FLOW
i1 <- is.na(dat$FLOW)
dat$Infilled[i1] <- dat$Modelled[i1]
df$infled=ifelse(!is.na(df$FLOW),df$FLOW,df$modeled)
df$infled=ifelse(!is.na(df$FLOW),df$FLOW,df$modeled)