如何填充R中data.frame中的空单元格

时间:2017-05-22 17:18:13

标签: r csv dataframe

我正在处理 R 中的data.frame,并希望以特定方式填充空单元格。在下表中,标题是“Dismissal”,第二行和第四行有两个空单元格。由于有超过100,000行,在实际data.frame中,我想一次填充那些空单元格,将第二行填充为NIL,将第四行填充为D.再说一遍,根据以下方式填充空单元格前一个现有细胞的价值。

    Dismissal      |
--------------------
        NIL        |
--------------------
    (empty)        |  
--------------------
         D         |
--------------------
     (empty)       |

2 个答案:

答案 0 :(得分:0)

您可以按如下方式遍历数据框

for (i in 1:nrow(df)){
         if (is.na(df$Dismissal[i])){
         df$Dismissal[i]=df$Dismissal[i-1] 
         }
    }

如果字段具有NA值,由于csv导入中的空单元格,您需要稍微更改循环:

==, != or >=, <=

NA值无法在is.na()中生效,因此您需要提问!is.na()或{{1}}。

答案 1 :(得分:0)

使用dplyrzoo的非循环解决方案:

library(dplyr)
library(zoo)
test.dat <- data.frame('Dismissal' = c('N', NA, 'D', NA, NA, 'C', NA))
test.dat$Dismissal <- as.character(test.dat$Dismissal)

test.dat %>%
  mutate(Test = ifelse(is.na(Dismissal),
                       #use fill forward function from zoo package
                       zoo::na.locf(lag(Dismissal), na.rm = F),
                       Dismissal))