r 使用 NA 设置数据格式



如果我有一个包含下面三列的数据集

Id    Date       Gender
1     NA         F
1     NA         NA
1     03-11-1977 NA
2     04-17-2005 NA
2     NA         M
3     NA         NA 
3     06-04-1999 NA
3     NA         F

如何清理这些数据,以便我在下面看到这样的数据集?

Id    Date        Gender
1     03-11-1977 F
2     04-17-2005 M
3     06-04-1999 F

谢谢。

IdfilterNAfill值。

library(dplyr)
df %>%
group_by(Id) %>%
tidyr::fill(Gender, .direction = "updown") %>%
filter(!is.na(Date))
#     Id Date       Gender
#  <int> <chr>      <chr> 
#1     1 03-11-1977 F     
#2     2 04-17-2005 M     
#3     3 06-04-1999 F     

您可以在by方法中使用na.omit

dat <- do.call(rbind, by(dat, dat$Id, function(x) cbind(x[1,1,drop=F], lapply(x[-1], na.omit))))
dat
#   Id       Date Gender
# 1  1 03-11-1977      F
# 2  2 04-17-2005      M
# 3  3 06-04-1999      F

数据:

dat <- read.table(header=T,text=' Id    Date       Gender
1     NA         F
1     NA         NA
1     03-11-1977 NA
2     04-17-2005 NA
2     NA         M
3     NA         NA 
3     06-04-1999 NA
3     NA         F')

最新更新