r - 填补缺失的水平

标签 r missing-data

我有以下类型的数据框:

Country <- rep(c("USA", "AUS", "GRC"),2)
Year    <- 2001:2006
Level   <- c("rich","middle","poor",rep(NA,3))
df <- data.frame(Country, Year,Level)

df 
Country Year  Level
1     USA 2001   rich
2     AUS 2002 middle
3     GRC 2003   poor
4     USA 2004   <NA>
5     AUS 2005   <NA>
6     GRC 2006   <NA>

我想在右列的最后用正确的级别标签填充缺失值。

所以预期的结果应该是这样的:
Country Year  Level
1     USA 2001   rich
2     AUS 2002 middle
3     GRC 2003   poor
4     USA 2004   rich
5     AUS 2005 middle
6     GRC 2006   poor

最佳答案

我们可以按“国家/地区”分组并获得非 NA 唯一值

library(dplyr)
df %>%
    group_by(Country) %>% 
    dplyr::mutate(Level = Level[!is.na(Level)][1])
# A tibble: 6 x 3
# Groups:   Country [3]
#  Country  Year  Level
#   <fctr> <int> <fctr>
#1     USA  2001   rich
#2     AUS  2002 middle
#3     GRC  2003   poor
#4     USA  2004   rich
#5     AUS  2005 middle
#6     GRC  2006   poor

如果我们已经加载 dplyr连同 plyr ,最好明确指定 dplyr::mutatedplyr::summarise以便它使用来自 dplyr 的函数. plyr中也有同样的功能它可能会屏蔽 dplyr 的功能当两者都加载时创建不同的行为。

关于r - 填补缺失的水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930802/

相关文章:

r - 选择一系列列中缺少数据的行

r - 通过分组插值来估算缺失值

python - 如果缺少连续值,则添加 nan

r - 更改 ggplot2 中给定图表中堆叠条形图的顺序

r - RStudio 中下载文件失败

r - Rscript.exe 中包含 Unicode 字符的文件路径

重复重采样函数 1000 次 ?使用lapply?

c++ - 从 R - .C vs .Call 调用 CUDA 编译的 .dll

javascript - 自动加入 Highcharts JS 中缺失的数据缺口

python - 如何在指定的时间间隔使用 shift 填充 pandas 中的缺失值?