【发布时间】:2020-09-09 22:35:15
【问题描述】:
我想征求您对 R 编码的建议和指导。具体来说,我的目标是:
-
使列上个月值稳定(参见下面的示例):问题是'上个月的值在几个月内连续稳定了多长时间?'
-
将列设为“稳定性”(参见下面的示例):我试图显示“连续几个月后 IV 发生变化”。例如,第 1 组的第 10 个月,变化(从 0.2 到 0.4)发生在连续 2 个月(第 8、9 个月)稳定 IV 之后。
-
创建“IV 变化”列(参见下面的示例):我想仅显示连续几个月的变化量。例如,第 1 组的第 6 个月到第 8 个月将为“n/a”,因为该组没有第 7 个月。
目前,我有前三列(“Group”、“Month”、“IV”):
structure(list(Group = c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2), Month = c(3,
4, 5, 6, 8, 9, 10, 5, 6, 7, 9), IV = c(0.1, 0.1, 0.5, 0.2, 0.2,
0.2, 0.4, 0.3, 0.4, 0.4, 0.4)), class = "data.frame", row.names = c(NA,
-11L), codepage = 65001L)
最终结果如下所示:
structure(list(Group = c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2), Month = c(3,
4, 5, 6, 8, 9, 10, 5, 6, 7, 9), IV = c(0.1, 0.1, 0.5, 0.2, 0.2,
0.2, 0.4, 0.3, 0.4, 0.4, 0.4), Previous_month_stability = c(NA,
1, 2, 1, NA, 1, 2, NA, 1, 1, NA), Change_IV = c(NA, 0, 0.4, -0.3,
NA, 0, 0.2, NA, 0.1, 0, NA), Stability2 = c(NA, 0, 2, 1, NA,
0, 2, NA, 1, 0, NA)), class = "data.frame", row.names = c(NA,
-11L), codepage = 65001L)
在表格中,它看起来像:
╔═══════╦═══════╦══════╦══════════════════════════╦══════════════╦════════════╗
║ Group ║ Month ║ IV ║ Previous_month_stability ║ Change in IV ║ Stability2 ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 1 ║ 3 ║ 0.10 ║ n/a ║ n/a ║ n/a ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 1 ║ 4 ║ 0.10 ║ 1 ║ 0 ║ 0 ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 1 ║ 5 ║ 0.50 ║ 2 ║ 0.40 ║ 2 ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 1 ║ 6 ║ 0.20 ║ 1 ║ -0.30 ║ 1 ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 1 ║ 8 ║ 0.20 ║ n/a ║ n/a ║ n/a ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 1 ║ 9 ║ 0.20 ║ 1 ║ 0 ║ 0 ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 1 ║ 10 ║ 0.40 ║ 2 ║ 0.2 ║ 2 ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 2 ║ 5 ║ 0.30 ║ n/a ║ n/a ║ n/a ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 2 ║ 6 ║ 0.40 ║ 1 ║ 0.10 ║ 1 ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 2 ║ 7 ║ 0.40 ║ 1 ║ 0 ║ 0 ║
╠═══════╬═══════╬══════╬══════════════════════════╬══════════════╬════════════╣
║ 2 ║ 9 ║ 0.40 ║ n/a ║ n/a ║ n/a ║
╚═══════╩═══════╩══════╩══════════════════════════╩══════════════╩════════════╝
【问题讨论】:
-
为了确保其他人可以真正帮助您,请阅读how to make a reproducible example in R - 例如使用
dput。您的表格看起来很花哨,但实际上对于复制到 R 环境和测试解决方案没有用。 -
非常感谢@alex_jwb90 的评论。我相应地更新了问题!
标签: r