![](/img/trans.png)
[英]R How to conditionally remove the last N characters from multiple observations
[英]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 值之前每一行的最后两个观察值? 变量date
和var1
应该是完整的。
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.