如果这是一个非常微不足道的问题,请原谅;我是 R 的新手。假设我有这个数据集:
data
puppy Measurement_Year Weight
1 Bella 1991 1.0
2 Bella 1993 1.2
3 Bella 1998 7.0
4 Charlie 1997 2.0
5 Charlie 1998 2.5
6 Cooper 1998 12.0
……我试图确定幼犬的平均体重从第一年到最后一年是增加还是减少。
手动,我会说:在他们称重的第一年,贝拉重 1 公斤,查理 2 公斤,铜 12 公斤。这意味着他们在第一年的平均体重是:(1 + 2 + 12)/3 = 5 kg
在称重的最后一年,贝拉重 7 公斤,查理 2.5 公斤,库珀 12 公斤。这意味着他们在最后一年的平均体重是:(7 + 2.5 + 12)/3 = 7.2 kg
这意味着幼犬的平均体重增加了 2.2 公斤,即从 5 公斤增加到 7.2 公斤。
我想在 R 中,也许我需要使用 group_by
data2 <- data %>% group_by(puppy) %>% summarise(
weight = mean(Weight)
)
从这里开始,我似乎无法理解这一点。我将不胜感激。
答案 0 :(得分:0)
您可以通过 arrange
Measurement_Year
数据,保留 first
和 last
Weight
并减去它的 mean
值。
library(dplyr)
df %>%
arrange(puppy, Measurement_Year) %>%
group_by(puppy) %>%
summarise(first = first(Weight),
last = last(Weight)) %>%
summarise(diff_weigth = mean(last) - mean(first))
# diff_weigth
# <dbl>
#1 2.17
答案 1 :(得分:0)
tmp=do.call(rbind,
by(df,list(df$puppy),function(x){
data.frame(
"start"=head(x$Weight,1),
"end"=tail(x$Weight,1)
)
})
)
mean(tmp$end)-mean(tmp$start)
[1] 2.166667