【问题标题】:Extracting the change of the mean per group over time提取每组平均值随时间的变化
【发布时间】:2020-03-21 10:15:05
【问题描述】:

我有一个数据表,我从中计算出平均值 sales,如下所示:

library(data.table)
DT <- fread(
"ID country year sales industry size cat4
1   NLD   2000  4   A   1   0
2   NLD   2000  4   B   1   1
3   NLD   2006  2   A   1   1
4   NLD   2002  4   A   1   0
5   NLD   2002  4   B   1   1
6   NLD   2006  2   A   1   1
7   NLD   2006  2   B   2   0
8   NLD   2006  1   A   1   4
9   GBR   2001  2   B   3   5
10  GBR   2001  1   B   2   5
11  GBR   2002  1   A   1   11
12  GBR   2006  1   A   1   2
13  GBR   2006  1   B   3   12
14  GBR   2006  1   A   1   2
15  GBR   2006  1   B   3   12",
header = TRUE)

setDT(DT)[,Mean_Sales:= mean(sales, na.rm=TRUE),  by=c("country", "industry", "size")]

但是,现在我对Mean_Sales 如何随时间变化感兴趣,每个组:by=c("iso3c", "industry", "size")

我想取mean of the absolute differences,除以他们分开的年份。

例如,对于行业 A 和规模为 1 的 NLD 公司,构成ID=1 和ID=8,我想要绝对差的平均值 (|1-4|=3),除以年份分开(2006-2000 = 6)。导致3/6 = 0.5 的平均值逐年变化。

我只是不知道如何将它放入 R 代码中。任何帮助将不胜感激。

期望的输出:

library(data.table)
DT <- fread(
"ID country year sales industry size cat4 delta
1   NLD   2000  4   A   1   0   0.5
2   NLD   2000  4   B   1   1   0.33
3   NLD   2006  2   A   1   1
4   NLD   2002  4   A   1   0
5   NLD   2002  4   B   1   1
6   NLD   2006  2   A   1   1
7   NLD   2006  2   B   1   0   0.33
8   NLD   2006  1   A   1   4   0.5
9   GBR   2001  2   B   3   5
10  GBR   2001  1   B   2   5
11  GBR   2002  1   A   1   11
12  GBR   2006  1   A   1   2
13  GBR   2006  1   B   3   12
14  GBR   2006  1   A   1   2
15  GBR   2006  1   B   3   12",
header = TRUE)

【问题讨论】:

    标签: r mean variations


    【解决方案1】:

    您可以将order 乘以year 得到lastfirst sales 值之间的绝对差值,然后除以year 的差值。

    library(data.table)
    
    DT[order(year), delta := abs(last(sales) - first(sales))/(max(year) - min(year)), 
                   .(country, industry, size)]
    

    【讨论】:

    • 感谢您的回答罗纳克。您的意思可能是Mean_Sales 而不是sales
    • @Tom 我认为您分享的示例计算是参考sales 而不是mean_sales (|1-4|=3)?
    • 我想我应该创造一个更好的例子哈哈。无论如何,我认为通过将您的解决方案应用于Mean_Sales,它仍然可以工作。
    • 这行得通吗?它会给你预期的输出吗?
    • 嘿 Ronak,我想我会删除这个问题。该代码在技术上有效,但因为我在思考问题时犯了一些错误,所以它没有达到我想要的效果。我将发布一个新的、更好的问题。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2022-01-21
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多