我有一个df,它是前两排两个教室里好学生、普通学生和坏学生的百分比,以及整个学校里好学生和普通学生的百分比
Classr Good Regular Bad
<chr> <dbl> <dbl> <dbl>
1 A 30 10 60
2 B 40 10 50
3 PR 80 10 10
我需要为任何教室计算一个指数,这是的结果
|PRGood GoodA|+|PRRegular RegularA|+| PRBad BadA|和教室B|PRGood GoodB|+|PRRegular RegularB|+| PRBad BadB|
在这个例子中,结果应该是:
Classr Good Regular Bad INDEX
<chr> <dbl> <dbl> <dbl> <dbl>
1 A 30 10 60 100
2 B 40 10 50 80
3 PR 80 10 10 NA <- This value doesn't matter
你知道怎么做吗?
我尝试使用此代码,但收到错误消息:
df%>%
mutate(across(2:4, ~.-tail(1,across(2:4)),))
实现所需结果的一个选项可能是这样的:
library(dplyr)
mutate(d, INDEX = rowSums(across(c(Good, Regular, Bad), ~ abs(.x[length(.x)] - .x))))
#> Classr Good Regular Bad INDEX
#> 1 A 30 10 60 100
#> 2 B 40 10 50 80
#> 3 PR 80 10 10 0
数据
d <- structure(list(Classr = c("A", "B", "PR"), Good = c(
30L, 40L,
80L
), Regular = c(10L, 10L, 10L), Bad = c(60L, 50L, 10L)), class = "data.frame", row.names = c(
"1",
"2", "3"
))