r - 在 R 中添加一行计算
问题描述
这感觉像是一个非常基本的问题,但我一直在努力解决这个问题。简化版如下。我有以下数据集:
a <- c('I' , 'E')
ja <- c(30 , 20)
fe <- c(50, 40)
ma <- c(35 , 22)
x <- data.frame(a, ja , fe , ma)
x
#> a ja fe ma
#> 1 I 30 50 35
#> 2 E 20 40 22
由reprex 包于 2020-12-04 创建(v0.3.0)
我想添加第 3 行,让第 I 行的数字减去 ja、fe 和 ma 的第 E 行。所以第 3 行看起来像:
a ja fe ma
I_E 10 10 13
将有 12 列,每个月一列,所以理想情况下,我希望能够简洁地引用它们,例如(在本例中)ja:ma 等。谢谢你的帮助!
解决方案
这是否有效:
library(dplyr)
library(stringr)
x %>%
bind_rows(x %>% summarise(a = str_c(a, lead(a), sep = '_')) %>% na.omit() %>%
bind_cols(x %>% summarise(across(2:4, ~ . - lead(.))) %>% na.omit()))
a ja fe ma
1 I 30 50 35
2 E 20 40 22
3 I_E 10 10 13
推荐阅读
- python - 如何从另一个 django 项目执行 django 命令?
- dart - 如何在 Dart 中调用第二个祖先方法
- cypress - 如何将值从命令行传递到赛普拉斯规范文件?
- networkx - 使用 Graphviz 绘制 NetworkX 图
- spring-mvc - 如何在 Spring MVC 控制器中添加应用上下文路径?
- python - 新窗口打开时从输入中获取数据
- plsql - 随机值在编译后在 oracle 程序中被替换
- javascript - 在 Typescript 的接口中放入泛型函数有什么好处?
- go - 捕捉阴影的内置类型
- sqlite - 防止 AndroidTests 修改数据库