我正在尝试弄清楚如何跨行(或行之间?)进行计算。我尝试过查找此内容,但显然我的 Google-Fu 今天并不强大,因为我只是找不到正确的搜索词。
这是我尝试处理的数据类型的 super 简化示例:
mydf <- data.frame(pair = rep(1,2),
participant = c("PartX", "PartY"),
goalsAtt = c(6, 3),
goalsScr = c(2, 3))
我们有关于参与者尝试了多少个“目标”以及他们实际得分的数据,并且可以说我想了解他们的“防守”能力。现在基本上我想做的是 mutate()
两个新列,名为…比方说 saved
和 missed
,其中 saved
是对方球员尝试的进球数减去他们进球数,而 missed
就是对方球员进球数。显然,参与者 X 会保存 0 个,错过 3 个,参与者 Y 会保存 4 个,错过 2 个。
现在显然这是一个愚蠢的简单示例,我将要处理 6 种不同的“目标”类型和 2.5k 个对,但我只是有一个关于从哪里开始的心理障碍。
这里是业余编码员,并且赞赏 Tidyverse 风格的解决方案。
最佳答案
好的,我们假设 pair
只能用于 2 个团队。这是一个 tidyverse
解决方案,我们首先为组内的位置设置索引号,然后减去保存的目标。对于错过目标也有类似的情况。
library(tidyverse)
mydf %>%
group_by(pair) %>%
mutate(id = row_number()) %>%
mutate(goalsSaved = if_else(id == 1,
lead(goalsAtt) - lead(goalsScr),
lag(goalsAtt) - lag(goalsScr))) %>%
mutate(goalsMissed = if_else(id == 1,
lead(goalsScr),
lag(goalsScr)))
# A tibble: 2 x 7
# Groups: pair [1]
pair participant goalsAtt goalsScr id goalsSaved goalsMissed
<dbl> <fct> <dbl> <dbl> <int> <dbl> <dbl>
1 1 PartX 6 2 1 0 3
2 1 PartY 3 3 2 4 2
关于r - 在 R 中执行行之间的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54875227/