第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用最新的非NA值替換NA

用最新的非NA值替換NA

慕田峪4524236 2019-05-29 14:35:46
用最新的非NA值替換NA在data.frame(或data.table)中,我想用最近的非NA值“填充”NA。一個簡單的例子,使用向量(而不是a data.frame)如下:> y <- c(NA, 2, 2, NA, NA, 3, NA, 4, NA, NA)我想要一個fill.NAs()允許我構(gòu)造的函數(shù)yy:> yy[1] NA NA NA  2  2  2  2  3  3  3  4  4我需要對許多(總計~1 Tb)小尺寸data.frames(~30-50 Mb)重復(fù)此操作,其中一行是NA,其所有條目都是。解決問題的好方法是什么?我做的丑陋的解決方案使用這個功能:last <- function (x){    x[length(x)]}    fill.NAs <- function(isNA){if (isNA[1] == 1) {    isNA[1:max({which(isNA==0)[1]-1},1)] <- 0 # first is NAs                                               # can't be forward filled}isNA.neg <- isNA.pos <- isNA.diff <- diff(isNA)isNA.pos[isNA.diff < 0] <- 0isNA.neg[isNA.diff > 0] <- 0which.isNA.neg <- which(as.logical(isNA.neg))if (length(which.isNA.neg)==0) return(NULL) # generates warnings later, but workswhich.isNA.pos <- which(as.logical(isNA.pos))which.isNA <- which(as.logical(isNA))if (length(which.isNA.neg)==length(which.isNA.pos)){    replacement <- rep(which.isNA.pos[2:length(which.isNA.neg)],                                 which.isNA.neg[2:max(length(which.isNA.neg)-1,2)] -                                 which.isNA.pos[1:max(length(which.isNA.neg)-1,1)])          replacement <- c(replacement, rep(last(which.isNA.pos), last(which.isNA) - last(which.isNA.pos)))} else {    replacement <- rep(which.isNA.pos[1:length(which.isNA.neg)], which.isNA.neg - which.isNA.pos[1:length(which.isNA.neg)])         replacement <- c(replacement, rep(last(which.isNA.pos), last(which.isNA) - last(which.isNA.pos)))}replacement}該功能fill.NAs使用如下:y <- c(NA, 2, 2, NA, NA, 3, NA, 4, NA, NA)isNA <- as.numeric(is.na(y))replacement <- fill.NAs(isNA)if (length(replacement)){which.isNA <- which(as.logical(isNA))to.replace <- which.isNA[which(isNA==0)[1]:length(which.isNA)]y[to.replace] <- y[replacement]} 產(chǎn)量> y[1] NA  2  2  2  2  3  3  3  4  4  4......似乎有效。但是,伙計,這太丑了!有什么建議?
查看完整描述

3 回答

  • 3 回答
  • 0 關(guān)注
  • 752 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號