首页 > 解决方案 > 在 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 等。谢谢你的帮助!

标签: rdataframe

解决方案


这是否有效:

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

推荐阅读