[英]How to fill the empty cells in data.frame in R
我正在R中的data.frame上工作,并希望以特定的方式填充空白单元格。 在下表中,标题为“解雇”,第二行和第四行中有两个空单元格。 由于在实际data.frame中有超过100,000行,我想一次填充这些空单元格,将第二行填充为NIL,将第四行填充为D。再说一遍,根据以前存在的单元格的值。
Dismissal |
--------------------
NIL |
--------------------
(empty) |
--------------------
D |
--------------------
(empty) |
您可以按如下所示遍历数据框
for (i in 1:nrow(df)){
if(df$Dismissal[i]=="empty")({
df$Dismissal[i]=df$Dismissal[i-1]
}
}
如果该字段具有NA值,则由于csv导入中的单元格为空,您将需要对循环进行一些更改:
for (i in 1:nrow(df)){
if (is.na(df$Dismissal[i])){
df$Dismissal[i]=df$Dismissal[i-1]
}
}
NA值不适用于==, != or >=, <=
因此您需要询问is.na()
或!is.na()
。
使用dplyr
和zoo
非循环解决方案:
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.