如何从r中一组的所有值中减去最大值
我现在有一个数据框,看起来像这样如何从r中一组的所有值中减去最大值,r,dataframe,subtraction,R,Dataframe,Subtraction,我现在有一个数据框,看起来像这样 tree cookie age C1T1 A 113 C1T1 B 108 C1T1 C 97 C1T2 A 133 C1T2 B 110 C1T2 C 100 我想用每个cookie的给定年龄减去每个树的最大年龄(因此在C1T1中从113、108和97中减去113,在C1T2中从133、110和100中减去133)。然后,我希望将新值保存为同一数据帧中的一列。所以它看起来像: tree cooki
tree cookie age
C1T1 A 113
C1T1 B 108
C1T1 C 97
C1T2 A 133
C1T2 B 110
C1T2 C 100
我想用每个cookie的给定年龄减去每个树的最大年龄(因此在C1T1中从113、108和97中减去113,在C1T2中从133、110和100中减去133)。然后,我希望将新值保存为同一数据帧中的一列。所以它看起来像:
tree cookie age new_age
C1T1 A 113 0
C1T1 B 108 5
C1T1 C 97 16
任何关于如何做到这一点的建议都将不胜感激 我们可以利用
mutate
在按“树”分组后创建新列,即取“age”的max
和每个“age”值的差值(-
)来创建“new\u age”
library(dplyr)
df1 <- df1 %>%
group_by(tree) %>%
mutate(new_age = max(age) - age)
数据
df1
df1
# A tibble: 6 x 4
# Groups: tree [2]
# tree cookie age new_age
# <chr> <chr> <int> <int>
#1 C1T1 A 113 0
#2 C1T1 B 108 5
#3 C1T1 C 97 16
#4 C1T2 A 133 0
#5 C1T2 B 110 23
#6 C1T2 C 100 33
df1$new_age <- with(df1, ave(age, tree, FUN = max) - age)
df1 <- structure(list(tree = c("C1T1", "C1T1", "C1T1", "C1T2", "C1T2",
"C1T2"), cookie = c("A", "B", "C", "A", "B", "C"), age = c(113L,
108L, 97L, 133L, 110L, 100L)), class = "data.frame", row.names = c(NA,
-6L))