R语言dplyr包计算数据框斜率并追加:每四行一组,处理缺失值
假设数据框名为df,列名为value,可以按如下方式计算斜率并追加到数据框中:
library(dplyr)
df <- df %>%
mutate(group = rep(1:(n()/4), each = 4, length.out = n())) %>%
group_by(group) %>%
mutate(
Slope = ifelse(is.na(value[1]) | is.na(value[4]), (value[2] - value[3])/30, (value[4] - value[1])/30)
) %>%
ungroup() %>%
select(-group) %>%
mutate(Slope = ifelse(is.na(Slope), NA, lag(Slope, default = NA)))
首先使用mutate函数将数据框分组,每四行为一组,同时为每组添加一个group列,值为1到n()/4。然后在每组中使用mutate函数计算斜率,使用ifelse函数判断第一行和第四行是否为缺失值,如果是则计算中间的三行的斜率,否则计算第一行和第四行的斜率。最后使用ungroup函数取消分组,删除group列,并使用lag函数将每组计算的斜率追加到每组的第一行后面。
需要注意的是,如果第一行为空值也需要追加斜率,则需要将lag函数的default参数设置为NA。
原文地址: https://www.cveoy.top/t/topic/l4Ef 著作权归作者所有。请勿转载和采集!