繁体   English   中英

如何从 R 中的行中删除最后的观察结果

[英]How to delete last observations from rows in R

我有 dataframe 像这样:

df <- data.frame("date" = c('2018','2019','2020'), 
                 "var1" = c(21,15,47), 
                 "var2" = c(0.24,0.43,0.87), 
                 "var3" = c(0.23,0.35,NA), 
                 "var4" = c(0.64,NA,NA), 
                 "var5" = c(NA,NA,NA)
                 )

如何删除 NA 值之前每一行的最后两个观察值? 变量datevar1应该是完整的。

df_want <- data.frame("date" = c('2018','2019','2020'), 
                 "var1" = c(21,15,47), 
                 "var2" = c(0.24,NA,NA), 
                 "var3" = c(NA,NA,NA), 
                 "var4" = c(NA,NA,NA), 
                 "var5" = c(NA,NA,NA)
)

一种方法是 for 循环:

for(i in seq(1,nrow(df))){
  y <- min(which(is.na(df[i,])))
  z <- max(y,which(colnames(df) == "var1") + 3)
  if (!is.infinite(y)) df[i,(z-2):ncol(df)] <- NA
}
df
  date var1 var2 var3 var4 var5
1 2018   21 0.24   NA   NA   NA
2 2019   15   NA   NA   NA   NA
3 2020   47   NA   NA   NA   NA

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM