[英]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.