如何使用 dplyr 估算 R 中的缺失变量?

HNS*_*SKD 5 r data-manipulation dplyr

我想为给定现有值的变量估算缺失值。在 中var2,我们注意到有很多NAs。

  1. 如果任何 2 个 id 相同,则它们的值var2相同。
  2. 如果 id 没有 值var2,就像 id==2 的情况一样,那么我们只输出为NA

它应该从df_olddf_new.

 df_old<- read.table(header = TRUE, text = "
 id  var1  var2 
  1  A       12    
  1  B       NA    
  1  E       NA    
  2  G       NA
  2  J       NA
 ")

df_new<- read.table(header = TRUE, text = "
id  var1  var2 
 1  A       12    
 1  B       12    
 1  E       12    
 2  G       NA
 2  J       NA
")
Run Code Online (Sandbox Code Playgroud)

我试过:

df_new<-df_old %>%
        group_by(id) %>%
        mutate(var2=na.omit(var2))
Run Code Online (Sandbox Code Playgroud)

我相信它不起作用,因为第二种情况。我还想知道使用 ifelse 是否可以。需要帮助谢谢!

bee*_*oot 5

var2如果每个可用值只有一个,id您可以简单地执行以下操作:

df_old %>%
  group_by(id) %>%
  mutate(var2 = min(var2, na.rm = TRUE))

Source: local data frame [5 x 3]
Groups: id [2]

     id   var1  var2
  <int> <fctr> <int>
1     1      A    12
2     1      B    12
3     1      E    12
4     2      G    NA
5     2      J    NA
Run Code Online (Sandbox Code Playgroud)

另一种选择是:

mutate(var2 = var2[1])
Run Code Online (Sandbox Code Playgroud)

  • @HNSKD也许你已经加载了plyr包?尝试 `dplyr:: mutate(var2 = min(var2, na.rm = TRUE))` (2认同)