r - 取决于额外变量 R 的第一差异面板数据
问题描述
我有一个面板数据集,如下所示
ID Model Month Country Activations avg_price
1 VW Golf 2012-01 NL 23 5000
1 VW Golf 2012-02 NL 2 5500
1 VW Golf 2012-01 FR 8 6000
1 VW Golf 2012-02 FR 34 7000
2 Audi TT 2012-01 NL 8 6900
现在,我想对Activations
和avg_price
变量进行第一个区别。我使用包中的diff(data$Activations)
函数执行此操作plm
,但首先我必须使用pdata.frame(data)
. 所以:
data_fd = pdata.frame(data)
data_fd$Activations = diff(data_fdactivations)
这使用上面的数据返回以下错误:duplicate couples (id-time) in resulting pdata.frame
. 这是因为我有不同国家/地区的数据,当我汇总所有国家/地区的数据时(如此总计Activations
且avg_price
只有一个 id-month 组合),效果很好。但是,我现在也想使用Country
变量来获取第一个差异。
然后,我的数据框应该如下所示:
ID Model Month Country Activations avg_price
1 VW Golf 2012-01 NL NA NA
1 VW Golf 2012-02 NL -21 500
1 VW Golf 2012-01 FR NA NA
1 VW Golf 2012-02 FR 26 1000
etc
有谁知道我怎么能做到这一点?
解决方案
看看,这是你想要的吗?
lag_new <- structure(list(ID = c(1L, 1L, 1L, 1L, 2L), Model = structure(c(2L,
2L, 2L, 2L, 1L), .Label = c("Audi TT", "VW Golf"), class = "factor"),
Month = structure(c(1L, 2L, 1L, 2L, 1L), .Label = c("2012-01",
"2012-02"), class = "factor"), Country = structure(c(2L,
2L, 1L, 1L, 2L), .Label = c("FR", "NL"), class = "factor"),
Activations = c(23L, 2L, 8L, 34L, 8L), avg_price = c(5000L,
5500L, 6000L, 7000L, 6900L), Activations_new = c(NA, -21L,
6L, 26L, -26L), avg_price_new = c(NA, 500L, 500L, 1000L,
-100L)), row.names = c(NA, -5L), class = "data.frame")
lag_new$Activations_new <- lag_new$Activations-lag(lag_new$Activations)
lag_new$avg_price_new <- lag_new$avg_price-lag(lag_new$avg_price)
推荐阅读
- python - torch.inverse 返回单位矩阵。计算前通过打印输入解决的错误(但为什么?)
- html - 选择所有其他祖先的 CSS 解决方案
- mysql - MySQL函数返回扩展名
- python - 上传到 AWS S3 后 zip 文件损坏
- javascript - this 不返回对象属性(箭头,this)
- python - matlab上的@符号和python上的lambda有什么区别
- linux - Ansible 模板追加字符串
- postgresql - 将 PostgreSQL 中的逗号分隔字符串转换为具有匹配文本的列
- machine-learning - 精度与召回曲线
- android - Bitrise Detox Android - React Native