本文介绍了最后观察结束在数据框架?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我希望对我正在工作的数据集执行最后观察结束,在其末尾缺少值。 这是一个简单的代码来做(问题之后): LOCF< - function(x) {#上次观察持续转发(从左到右的系列) LOCF x [LOCF:length(x)]< - x [LOCF] return(x)} #示例: LOCF (1,2,3,4,NA,NA)) LOCF(c(1,NA,3,4,NA,NA)) 现在,这对于简单的向量非常有用。但是,如果我在数据框中尝试使用它: a< - data.frame(rep(a ,4),1:4,1:4,c(1,NA,NA,NA))a t(apply(a,1,LOCF))#将会搞乱 它将把我的数据框变成一个字符矩阵。 干杯, Tal 解决方案这已经存在: $($) na.locf(data.frame(rep(a,4),1:4,1:4,c(1,NA,NA,NA) )) I wish to implement a "Last Observation Carried Forward" for a data set I am working on which has missing values at the end of it.Here is a simple code to do it (question after it):LOCF <- function(x){ # Last Observation Carried Forward (for a left to right series) LOCF <- max(which(!is.na(x))) # the location of the Last Observation to Carry Forward x[LOCF:length(x)] <- x[LOCF] return(x)}# example:LOCF(c(1,2,3,4,NA,NA))LOCF(c(1,NA,3,4,NA,NA))Now this works great for simple vectors. But if I where to try and use it on a data frame:a <- data.frame(rep("a",4), 1:4,1:4, c(1,NA,NA,NA))at(apply(a, 1, LOCF)) # will make a messIt will turn my data frame into a character matrix.Can you think of a way to do LOCF on a data.frame, without turning it into a matrix? (I could use loops and such to correct the mess, but would love for a more elegant solution)Cheers,Tal 解决方案 This already exists:library(zoo)na.locf(data.frame(rep("a",4), 1:4,1:4, c(1,NA,NA,NA))) 这篇关于最后观察结束在数据框架?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
09-05 17:54