r - 从其他列移动具有滞后数据的列并根据需要放大数据框
问题描述
我有一个带有值的数据框,我需要一个新列,其中的值向下移动了一些行,但数据框必须获得更多行以容纳移位的数据。
到目前为止我得到了什么:
df <- data.frame(day=1:5,value=floor(runif(5, min=0, max=101)))
> df %>% dplyr::mutate(value2=dplyr::lag(value,n=2, default = 0))
day value value2
1 1 19 0
2 2 78 0
3 3 18 19
4 4 14 78
5 5 10 18
预期结果:
day value value2
1 1 19 0
2 2 78 0
3 3 18 19
4 4 14 78
5 5 10 18
6 6 0 14
7 7 0 10
坚持使数据框增长所需的行。
解决方案
使用合并。使用所需的行数创建“目标”数据集,用 0 填充 NA 值,然后将滞后值重新映射到“value2”。将“滞后”存储为变量很有用,但有可能变得更加冗长。
have <- data.frame(
day= 1:5,
value = c(19, 78, 18, 14, 10),
value2 = c(0, 0, 19, 78, 18)
)
target <- data.frame(
day=1:7
)
want <- merge(have, target, by='day', all=T)
want[is.na(want)] <- 0
lag <- 2
## just one way of mapping a lagged response
want$value2 <- c(rep(0, lag), rev(rev(want$value)[-{1:lag}]))
推荐阅读
- wordpress - 如何从 WordPress 仪表板启用外观选项?
- javascript - Highcharts Activity Gauge 中的数据标签
- javascript - 我的网站表单中的自动完成在桌面浏览器和 IOS 浏览器中运行良好,但在 android 浏览器中无法运行......不知道为什么?
- python - Jupyter 笔记本中未找到模块错误
- python - 在 Python 中执行函数链
- flutter - 错误:没有为类“对象”定义吸气剂“长度”?
- google-api - Google Homegraph API:无法发送状态:reportState 中的“ERROR”
- c# - Rabbitmq Channel.Dispose vs channel = null
- javascript - 创建 React 应用程序失败。我用 npm init react-app my-app
- java - 滚动回收站视图时工具栏不隐藏