让一年内为某一特定群体计算的平均数适用于该年的所有群体。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让一年内为某一特定群体计算的平均数适用于该年的所有群体。相关的知识,希望对你有一定的参考价值。

我为我的标题表述不当而道歉。如果已经有人问过类似的问题,并且已经提供了足够的答案,请告诉我。

我的问题是这样的。

我已经生成了一个变量。VarX_mean的平均值,计算出 VarX 跨组。YearGroup2,使用以下代码。

setDT(df)[, VarX_mean := mean(VarX), by = c("Year","Group2")]

随后,我将Group2==0的VarX_mean替换为0。VarX_mean2.

我想创造什么: 其实我想,是为了 VarX_mean 计算的 Group2 以涉及全年,即列。WhatIWishtoCreate

    Year   Group2   VarX   VarX_mean  VarX_mean2    WhatIWishtoCreate
    2001     1        2      3          3             3
    2001     1        3      3          3             3
    2001     1        4      3          3             3
    2001     0        6      6          0             3
    2002     1        5      5.5        5.5           5.5
    2002     1        6      5.5        5.5           5.5
    2002     0        9      9          0             5.5
    2002     0        9      9          0             5.5
    2002     0        9      9          0             5.5
    2003     1        1      2.5        2.5           2.5
    2003     1        2      2.5        2.5           2.5
    2003     1        4      2.5        2.5           2.5
    2003     1        3      2.5        2.5           2.5
    2003     0        4      4          0             2.5
    2003     0        4      4          0             2.5

先谢谢你。

答案

您可以使用 dplyr:

library(dplyr)

df %>%
    group_by(Year) %>% 
    arrange(Group2) %>% 
    mutate(WhatIWishtoCreate = first(VarX_mean)
另一答案

您可以选择 first VarX_mean 在每 Year 哪儿 Group2 == 1.

library(data.table)

df[, newcol := first(VarX_mean[Group2 == 1]), Year]
df

#    Year Group2 VarX VarX_mean VarX_mean2 newcol
# 1: 2001      1    2       3.0        3.0    3.0
# 2: 2001      1    3       3.0        3.0    3.0
# 3: 2001      1    4       3.0        3.0    3.0
# 4: 2001      0    6       6.0        0.0    3.0
# 5: 2002      1    5       5.5        5.5    5.5
# 6: 2002      1    6       5.5        5.5    5.5
# 7: 2002      0    9       9.0        0.0    5.5
# 8: 2002      0    9       9.0        0.0    5.5
# 9: 2002      0    9       9.0        0.0    5.5
#10: 2003      1    1       2.5        2.5    2.5
#11: 2003      1    2       2.5        2.5    2.5
#12: 2003      1    4       2.5        2.5    2.5
#13: 2003      1    3       2.5        2.5    2.5
#14: 2003      0    4       4.0        0.0    2.5
#15: 2003      0    4       4.0        0.0    2.5
另一答案

我们也可以做

library(data.table)
df[, newcol := VarX_mean[Group2 == 1][1], Year]

以上是关于让一年内为某一特定群体计算的平均数适用于该年的所有群体。的主要内容,如果未能解决你的问题,请参考以下文章

c语言编程:输入某年某月某日,计算出这一天是该年的第几天?该怎么解答啊

编程:要求输入某一年月日,判断其为该年的第几天?

C语言练习之计算某年日是该年的第几天

输入年 月 日 ,计算时该年的第几天

python3实现在二叉树中找出和为某一值的所有路径

用C语言写一个函数,给出年月日,计算该日是该年的第几天