在另一列中填充具有相应行值的NAs

  • 本文关键字:NAs 填充 一列
  • 更新时间 :
  • 英文 :


我正在使用Rstudio。我有一个简单的数据框架,如下所示:

 df <- 
 ID  TAD  TNOM
  1    0    0
  1    0.3  NA
  1    0.6  0.5
  1    1    NA

我想要一个代码,用TAD列中相应的行值填充TNOM的NA。

结果应该是:

 df <-
 ID  TAD  TNOM
  1    0    0
  1    0.3  0.3
  1    0.6  0.5
  1    1    1

示例:

df <- data.frame(ID=c(1,1,1,1), TAD=c(0,0.3,0.6,1), TNOM=c(0,NA,0.5,NA))
df
#   ID TAD TNOM
# 1  1 0.0  0.0
# 2  1 0.3   NA
# 3  1 0.6  0.5
# 4  1 1.0   NA

使用ifelse(condition,TRUE,FALSE)

df$TNOM<-ifelse(is.na(df$TNOM),df$TAD,df$TNOM)

或使用with(data, expression)

df$TNOM<-with(df,ifelse(is.na(TNOM),TAD,TNOM))

或基于is.na()

重新赋值
df$TNOM[is.na(df$TNOM)] <- df$TAD[is.na(df$TNOM)]

所有三个给出:

df
#   ID TAD TNOM
# 1  1 0.0  0.0
# 2  1 0.3  0.3
# 3  1 0.6  0.5
# 4  1 1.0  1.0

使用sqldf:

library(sqldf)
sqldf('select ID, TAD,
      case when TNOM is null then TAD else TNOM end as TNOM 
      from df')
输出:

  ID TAD TNOM
1  1 0.0  0.0
2  1 0.3  0.3
3  1 0.6  0.5
4  1 1.0  1.0

最新更新