我想创建一个新变量
sales.T.minus.1
,它将显示第 - 1 年的销售额。我在下面创建了一个可复制的示例:
library(plm)
library(dplyr)
data <- pdata.frame(Cigar)
data("Cigar")
data <- data %>%
mutate(sales.T.minus.1 = lag(sales, 1))
不幸的是这个代码不起作用。变量 sales.T.minus.1 中的值与变量 sales 中的值相同。
年 | 销售 | 销售额.T.减1 |
---|---|---|
64 | 95.4 | 95.4 |
怎样才能达到我想要的结果?
您的代码本身不起作用,因为您在将其传递给
data("Cigar")
函数后调用了 pdata.frame()
。以下代码有效:
library(plm)
library(dplyr)
data("Cigar" , package = "plm")
data <- pdata.frame(Cigar)
output <- data %>%
mutate(sales.T.minus.2 = lag(sales, 2))
尝试使用
dplyr::lag
,因为您安装的软件包之间可能存在一些冲突的功能。运行时应该像这样工作:
library(plm)
library(dplyr)
data("Cigar")
data <- pdata.frame(Cigar)
data <- data %>%
mutate(sales.T.minus.1 = dplyr::lag(sales, 2))
# sample output as example
sales sales.T.minus.1
1-63 93.9 NA
1-64 95.4 NA
1-65 98.5 93.9
1-66 96.4 95.4
1-67 95.5 98.5
创建于 2024-03-06,使用 reprex v2.0.2