R dplyr 计算数据框斜率并追加:每四行一组,缺失值特殊处理
假设数据框为df,第一列为需要计算斜率的数值列,可以按照以下步骤进行操作:
- 使用mutate函数创建一个新列group,表示每四行为一组:
df <- df %>% mutate(group = rep(1:(nrow(df) %/% 4 + 1), each = 4)[1:nrow(df)])
- 使用mutate函数计算每组的斜率,如果某一组不足四行,则计算前三行的斜率:
df <- df %>% group_by(group) %>%
mutate(Slope = ifelse(n() == 4, (.[4, 1] - .[1, 1])/30, (.[3, 1] - .[1, 1])/20))
- 将第一行的斜率补全,如果第一行为空值,则将斜率追加到空值后面:
df$Slope[1] <- ifelse(is.na(df$Slope[1]), df$Slope[2], df$Slope[1])
for(i in 2:nrow(df)){
if(is.na(df$Slope[i])){
df$Slope[i] <- df$Slope[i+1]
}
}
原文地址: https://www.cveoy.top/t/topic/l34o 著作权归作者所有。请勿转载和采集!