gpt4 book ai didi

r - R/dplyr 中各组之间的工程变更

转载 作者:行者123 更新时间:2023-12-02 06:47:17 25 4
gpt4 key购买 nike

卡在 R 中的计算上。假设我有以下数据框:

Name | Date | Count
Bob | 2019-03-03 | 253
Bob | 2019-03-03 | 253
Bob | 2019-03-02 | 252
Bob | 2019-03-01 | 251
Tim | 2019-03-04 | 257
Tim | 2019-03-04 | 257
Tim | 2019-03-04 | 256
Tim | 2019-03-03 | 254

我的目标是设计一个绝对变化的专栏,如下所示:

Name | Date | Count | Change
Bob | 2019-03-03 | 253 | 0
Bob | 2019-03-03 | 253 | 1
Bob | 2019-03-02 | 252 | 1
Bob | 2019-03-01 | 251 | 0
Tim | 2019-03-04 | 257 | 0
Tim | 2019-03-04 | 257 | 1
Tim | 2019-03-04 | 256 | 2
Tim | 2019-03-03 | 254 | 0

我当然可以

df %>% group_by(Name) %>% arrange(desc(Date)) %>% arrange(desc(Count))

但在那之后,我迷路了。我会以某种方式改变(Change = Count)吗?

最佳答案

使用来自 base R 和 dplyrdiff 的解决方案。

library(dplyr)
library(tidyr)

df2 <- df %>%
group_by(Name) %>%
mutate(Change = c(-diff(Count), 0)) %>%
ungroup()
df2
# # A tibble: 8 x 4
# Name Date Count Change
# <chr> <chr> <int> <dbl>
# 1 Bob 2019-03-03 253 0
# 2 Bob 2019-03-03 253 1
# 3 Bob 2019-03-02 252 1
# 4 Bob 2019-03-01 251 0
# 5 Tim 2019-03-04 257 0
# 6 Tim 2019-03-04 257 1
# 7 Tim 2019-03-04 256 2
# 8 Tim 2019-03-03 254 0

数据

df <- read.table(text = "Name|Date|Count
Bob|'2019-03-03'|253
Bob|'2019-03-03'|253
Bob|'2019-03-02'|252
Bob|'2019-03-01'|251
Tim|'2019-03-04'|257
Tim|'2019-03-04'|257
Tim|'2019-03-04'|256
Tim|'2019-03-03'|254",
header = TRUE, stringsAsFactors = FALSE, sep = "|")

关于r - R/dplyr 中各组之间的工程变更,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55505629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com