首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:当Select语句中有附加变量时,Mutate返回NA值

问R:当Select语句中有附加变量时,Mutate返回NA值
EN

Stack Overflow用户
提问于 2018-07-26 02:32:20
回答 1查看 807关注 0票数 1

我使用dplyr和rollmean均值来计算13周移动平均值和增长率。以下是工作原理:

代码语言:javascript
复制
NEW_DATA <- DATA %>% 
    select(CAT, Inventory_Amount, Sales, Shipments, DATE)%>%
    group_by(CAT, DATE)%>%
    summarise(
            INVENTORY = sum(Inventory_Amount),
            SO = sum(Sale),
            SI = sum(Shipments)
    ) %>%
    arrange(CAT, DATE)%>%
    mutate(SO_13WK_AVG = rollmean(x = SO, 13, align = "right", fill = NA ),
           GROWTH = round(((SO - lag(SO, 52)) / lag(SO, 52)) *100,2))

此代码添加了两个新列"SO_13WK_AVG“( 13周销售额平均值)和Growth (销售额的YoY增长率)

当我尝试从原始数据框中选择一个额外的变量以包含在新的汇总数据框中时,正在创建的新变量的值都变成NA的值。下面的代码为SO_13WK_AVG和GROWTH生成NA(我所做的所有工作就是选择"WK“变量:

代码语言:javascript
复制
NEW_DATA <- DATA %>% 
    select(CAT, Inventory_Amount, Sales, Shipments, DATE, WK)%>%
    group_by(CAT, DATE, WK)%>%
    summarise(
            INVENTORY = sum(Inventory_Amount),
            SO = sum(Sale),
            SI = sum(Shipments)
    ) %>%
    arrange(CAT, DATE)%>%
    mutate(SO_13WK_AVG = rollmean(x = SO, 13, align = "right", fill = NA ),
           GROWTH = round(((SO - lag(SO, 52)) / lag(SO, 52)) *100,2))

我搜索了stackoverflow,其中一个发现了一个看起来相关的线程:

Group/Mutate only returns NA and not an average

此线程建议使用na.rm = TRUE从计算中删除NA值。但是,据我所知,我没有任何缺失值。任何帮助/评论都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-12 05:08:17

我刚刚解决了一个非常类似的问题。如果不花更多的时间思考,我不能完全判断它是否能解决你的问题,但我是按照两个变量进行分组的,这两个变量解释了我的数据集(位置和周)的所有变化。因此,滚动平均值要么无法计算,要么只能创建填充值。不按“星期”分组解决了这个问题。由于"WK“几乎100%依赖于"Date",我想你也会遇到同样的问题。记住,"summarise“从分组中删除最后一个分组变量。尝试在总结之前按WK分组,然后不带周或日期进行重新分组。

(顺便说一句,我相信你已经弄明白了一些事情,因为这已经是两年前的事了,但我想其他人也会遇到这个问题,毕竟,这就是我提出这个问题的原因。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51525561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档