在基于现有行进行计算的 Dataframe 中创建新行

f1tvaqid  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(144)

enter image description here
在所附的图像中,我想创建并添加c变量行r到dataframe。行c是行a -行b(按日期等)。已尝试使用dplyr,但没有得到那里。

variable <- c(a,b,a,b) 
date <- c(jan 22,jan 22, feb 22,feb 22) 
amount <- c(100,20,100,20)
DF:
variable   date   amount
--------   ----   ------
a         Jan 22   100
b         Jan 22   20
c         Jan 22   80
a         Jan 22   100
b         Jan 22   20
c         Jan 22   80
gfttwv5a

gfttwv5a1#

最好是跨列执行数学运算,而不是跨行执行数学运算,因此最好的方法是首先将数据pivot_wider(或整形)为宽格式,然后执行mutate,然后将pivot_longer恢复为所需的长格式。使用tidyverse

DF |>
  pivot_wider(id_cols = "date" , names_from = "variable", values_from = "amount") |> 
  mutate(c = a-b) |>
  pivot_longer(c(a,b,c), names_to = "variable", values_to = "amount")

  date   variable amount
  <chr>  <chr>     <dbl>
1 jan 22 a           100
2 jan 22 b            20
3 jan 22 c            80
4 feb 22 a           100
5 feb 22 b            20
6 feb 22 c            80

相关问题