【问题标题】:how can I calculate mean of every 6 rows in a data frame based on the condition of other column?如何根据其他列的条件计算数据框中每 6 行的平均值?
【发布时间】:2021-04-16 02:12:29
【问题描述】:

我在 R 中有一个数据框,包含 3000 行和 2 列(temp、flag),如果 flag 列中的相应值不是 NA,我试图将“meantemp”计算为每 6 行的第三列,所以如果标志值等于 NA 我想在 meantemp 列中显示 NA 值。抱歉这个问题。

【问题讨论】:

标签: r dataframe mean


【解决方案1】:

你可以试试:

library(dplyr)

df %>%
  group_by(group = ceiling(row_number()/6)) %>%
  mutate(meantemp = if(all(is.na(flag))) mean(temp, na.rm = TRUE) else NA) %>%
  ungroup() %>%
  select(-group) -> df

【讨论】:

  • 感谢您的帮助,但它不起作用。实际上我已经计算了平均温度的第三列。不,我只想使用标志和平均温度创建第四列,我想说如果相应的值不是 NA,则在新列中保持平均温度,如果相应的标志将平均温度转为 Na是 NA
  • @Faranakomidi 您能否提供示例数据以及预期输出,以便清楚您的要求?阅读stackoverflow.com/questions/5963269
  • 谢谢,我找到了解决方法:hourlyHOBO% filter(minute(date_time) %% 10 == 0) %>% mutate(meantemp = rollmean(temp, 6 , fill = FALSE, align = "right"))%>% filter(minute(date_time) == 0) hourlyHOBO$HOBOmean
猜你喜欢
  • 1970-01-01
  • 2014-11-04
  • 2019-07-18
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多