R按Stage分组计算压力时间斜率dp.dt行数不匹配报错如何解决
解决方案
你可以使用以下两种简洁的方式实现需求,均不需要额外安装其他依赖包:
方法1:直接补全diff返回结果的长度
利用c()在diff计算的n-1个结果末尾拼接1个NA,使其长度和分组内的行数匹配:
library(dplyr) df <- df %>% group_by(Stage) %>% mutate(dp.dt = c(diff(Pressure)/as.numeric(diff(DateTime)), NA_real_))
说明:使用NA_real_而非NA是为了明确数值类型,避免出现列类型不兼容的报错。
方法2:用lead()函数实现(逻辑更直观)
lead()函数默认取当前行的下一行数值,分组内最后一行的返回值自动为NA,不需要额外处理长度:
library(dplyr) df <- df %>% group_by(Stage) %>% mutate(dp.dt = (lead(Pressure) - Pressure) / as.numeric(lead(DateTime) - DateTime))
两种方法输出的结果完全符合你给出的示例要求。
内容的提问来源于stack exchange,提问作者new2data
相关产品推荐
相关产品推荐

