首页 > 解决方案 > 如何通过将观察除以滞后来创建新变量?

问题描述

我的数据集包含每年的频率。现在,我想将每个频率除以上一年同一变量的频率。我创建了一个滞后函数并收到错误消息“无法将quosures对象转换为函数”。但是,我想不出另一种实现方式。

简化后,我的数据集可以表示如下:

library(tidyverse)
library(dplyr)

    year <- c(1914, 1915, 1916, 1917)
    a <- c("blue", "green", "green", "blue")
    df_1 <- data.frame(a, year)
    df_1 <- group_by(a, year) %>% count(name = "counts") %>% 
            ungroup(a, year) %>% 
            mutate(y=counts/sum(counts))

我的代码如下:

calc_persistance = function(y){y/lag(y)}
df_1 %>% 
mutate_if(vars(contains("y")), calc_persistance)

标签: rdplyrlag

解决方案


推荐阅读