【问题标题】:Mutate - NA Handling变异 - NA 处理
【发布时间】:2015-01-04 12:56:46
【问题描述】:

我使用了排列和变异组合来根据分组进行添加。例如,我使用了以下内容:

master_df <-group_by(master_df,asof_dt)
mutate(master_df,tot_flag=ls_flag)

这会将我的数据框 master_df 按 asof_dt 分组,然后创建 tot_flag 并按日期添加 ls_flag。

但是,我的 ls_flag 列包含 NA。

我想做以下事情: 1) 找出如何添加 ls_flag,忽略任何 NA 2) 了解如何添加每天的 NA 总数。

这是完整的例子:

asof_dt<-c("2014-10-01","2014-10-01","2014-10-01","2014-10-02","2014-10-02","2014-10-02")
ls_flag<-c(1,1,NA,NA,1,1)
master_df<-data.frame(asof_dt,ls_flag)
master_df <-group_by(master_df,asof_dt)
mutate(master_df,tot_flag=sum(ls_flag))

非常感谢!

【问题讨论】:

  • 如果您提供问题和数据的reproducible example 会更容易为您提供帮助。
  • 谢谢。我将它添加到原始示例中。

标签: r dplyr na mutated


【解决方案1】:

这是您想要的结果吗?您可以在sum() 中使用na.rm = TRUE 选项:

master_df %>%
  group_by(asof_dt) %>%
  mutate(tot_flag = sum(ls_flag, na.rm = TRUE),
         tot_NA = sum(is.na(ls_flag)))

#Source: local data frame [6 x 4]
#Groups: asof_dt
#
#     asof_dt ls_flag tot_flag tot_NA
#1 2014-10-01       1        2      1
#2 2014-10-01       1        2      1
#3 2014-10-01      NA        2      1
#4 2014-10-02      NA        2      1
#5 2014-10-02       1        2      1
#6 2014-10-02       1        2      1

或者您可能只是想要一个“摘要”(使用summarise):

master_df %>%
  group_by(asof_dt) %>%
  summarise(tot_flag = sum(ls_flag, na.rm = TRUE),
            tot_NA = sum(is.na(ls_flag)))
#Source: local data frame [2 x 3]
#
#     asof_dt tot_flag tot_NA
#1 2014-10-01        2      1
#2 2014-10-02        2      1

【讨论】:

  • 好的,谢谢。看起来对于某些函数, na.rm 嵌套在内部,而对于其他函数,它在外部。既然我在那里看到它,我应该检查一下 PDF。非常感谢!
【解决方案2】:

求和:

> aggregate(ls_flag~asof_dt, data=master_df, sum)
     asof_dt ls_flag
1 2014-10-01       2
2 2014-10-02       2

或:

> with(master_df, tapply(ls_flag, asof_dt, sum, na.rm=T))
2014-10-01 2014-10-02 
         2          2 

对于 NA 的计数:

> with(master_df, tapply(ls_flag, asof_dt, function(x) sum(is.na(x))))
2014-10-01 2014-10-02 
         1          1 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-14
    • 2020-12-15
    • 2012-07-17
    • 2020-05-22
    • 2021-09-03
    • 1970-01-01
    • 2015-10-10
    • 2014-12-28
    相关资源
    最近更新 更多