r - 如何将前导行中的每一行减去R中的每五行?
问题描述
我有一个更大的数据框,其中包含多列和数千行。我想通过从数据帧的每五行的前导行中减去前一行的值来替换每个前导行的值。例如,第一个值应该保留它的值,第二行应该是:second row - first row
。同样,第六行应保留其值,但是,第七行将是seventh row - sixth row
. 这是一个示例数据框
DF = data.frame(A= c(1:11), B = c(11:21))
输出应如下所示
> Output
A B
1 1 11
2 1 1
3 1 1
4 1 1
5 1 1
6 6 16
7 1 1
8 1 1
9 1 1
10 1 1
11 11 21
解决方案
一种选择是创建一个分组变量,然后进行转换,diff
其中选择的列的相邻元素之间的差异mutate_all
(如果只需要列的一个子集,请使用mutate_if
或mutate_at
)
library(dplyr) #v_0.8.3
DF %>%
group_by(grp = as.integer(gl(n(), 5, n()))) %>%
mutate_all(~c(first(.), diff(.))) %>%
ungroup %>%
select(-grp)
# A tibble: 11 x 2
# A B
# <int> <int>
# 1 1 11
# 2 1 1
# 3 1 1
# 4 1 1
# 5 1 1
# 6 6 16
# 7 1 1
# 8 1 1
# 9 1 1
#10 1 1
#11 11 21
当我们使用mutate_all
after时,上面也给出了一个警告group_by
(以前它曾经工作过 - 在新版本中,正确的语法是使用mutate_at
DF %>%
group_by(grp = as.integer(gl(n(), 5, n()))) %>%
mutate_at(vars(-group_cols()), ~c(first(.), diff(.))) %>%
ungroup %>%
select(-grp)
推荐阅读
- reactjs - nginx 上带有 wordrpess 的 React 应用程序无法在 HTTPS 上运行
- react-native - useLinking 与回调 ref
- performance - Neo4j 交互式图形冻结
- json - React 无法读取组件内的 JSON 本地文件值
- python - 使用 Django 实现 3x3 图像网格
- php - 如何修复 laravel 查询异常
- python - 如何使用 pandas DataFrame builder 的函数 from_records 强制数据类型?
- javascript - 允许这种优化以求素数的代数是什么?
- angular - 承诺似乎根本无法解决
- angular - 获取我的组件已在其中呈现的模板的上下文