【问题标题】:Looking for a way of creating a cumulative average for individuals within a dataset寻找一种为数据集中的个人创建累积平均值的方法
【发布时间】:2022-07-08 00:52:13
【问题描述】:

我有一个包含多个个体 (Cow_ID) 的数据集,他们每天的温差如下所示:

df<-data.frame("Cow_ID"=c("192","192","192","192","201","201","201","201","652","652","652","652"),"Day"=c("1","2","3","4","1","2","3","4","1","2","3","4"),"Temp_Diff"=c("0.2","0.1","na","0.8","0.4","0.1","0.7","na","0.1","0.3","na","0.8"))

我想计算新列中每个人的累积平均值。我也需要它来排除 na。

我设法让一些代码为整个数据集运行它,但我找不到一种方法让它在一个人结束时停止并为下一个人重新开始。

df<-df%>%mutate(new=replace(Temp_Diff,!is.na(Temp_Diff),cummean(Temp_Diff[!is.na(Temp_Diff)])))%>%fill(new)

请原谅草率的编码,我对此很陌生!

【问题讨论】:

    标签: r cumulative-sum


    【解决方案1】:

    如果是'Cow_ID',则对该列进行分组

    df %>% na_if("na") %>% type.convert(as.is = TRUE) %>% group_by(Cow_ID) %>% mutate(new = replace(Temp_Diff, !is.na(Temp_Diff), cummean(Temp_Diff[!is.na(Temp_Diff)]))) %>% ungroup
    

    【讨论】:

      猜你喜欢
      • 2016-07-11
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多