我有以下資料集:

我想根據子組計算值之間的差異。然而,子組 1 必須排在第一位。因此10-0=10;0-20=-20;30-31=-1。我想使用 R 來執行它。

我知道它會是這樣的,但我不知道如何將 sub_group 放入代碼中:
library(tidyverse)
df %>%
group_by(group) %>%
summarise(difference= diff(value))
uj5u.com熱心網友回復:
OP評論后編輯的答案:
OP 澄清說,資料不是sub_group在每個組中排序的。因此,我添加了arrangeafter group_by。OP 進一步澄清了sub_group == 1always 的值應該是差異的第一項。
下面我將在一個示例中演示如何實作這一點,每個組中有 3 個 sub_groups。該代碼基于sub_group == 1. 在差異之后,我洗掉了每個組的第一個 sub_group。
library(tidyverse)
df <- tibble(group = rep(LETTERS[1:3], each = 3),
sub_group = rep(1:3, 3),
value = c(10,0,5,0,20,15,30,31,10))
df
#> # A tibble: 9 × 3
#> group sub_group value
#> <chr> <int> <dbl>
#> 1 A 1 10
#> 2 A 2 0
#> 3 A 3 5
#> 4 B 1 0
#> 5 B 2 20
#> 6 B 3 15
#> 7 C 1 30
#> 8 C 2 31
#> 9 C 3 10
df |>
group_by(group) |>
arrange(group, sub_group) |>
mutate(value = first(value) - value) |>
slice(2:n())
#> # A tibble: 6 × 3
#> # Groups: group [3]
#> group sub_group value
#> <chr> <int> <dbl>
#> 1 A 2 10
#> 2 A 3 5
#> 3 B 2 -20
#> 4 B 3 -15
#> 5 C 2 -1
#> 6 C 3 20
使用reprex v2.0.2創建于 2022-10-18
PS(來自原始答案)在示例資料中,您顯示了 C 組的錯誤差異。它應該顯示為 -1。我相信,如果您可以使用代碼或至少作為可以復制的文本而不是圖片發布示例資料,我相信這里的大多數人都會很感激。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/518228.html
上一篇:javascript更好的倒計時
下一篇:等效公式之間的差異
