gpt4 book ai didi

引用 data.frame 的前几行来计算 R 中的新列

转载 作者:行者123 更新时间:2023-12-02 09:35:05 24 4
gpt4 key购买 nike

我正在尝试计算访问不同巢穴的雏鸡之间的体重变化。这需要R查找当前行中的嵌套代码,找到上次访问嵌套的时间,并从当前访问中减去上次访问的权重。对于第一次访问每个巢穴,我想输出当前的重量(即,就好像上次不存在的访问时的重量为零)。

我的数据采用以下形式:

Nest   <- c(a,b,c,d,e,c,b,c)
Weight <- c(2,4,3,3,2,6,8,10)
df <- data.frame(Nest, Weight)

所以这里期望的输出是:

Change <- c(2,4,3,3,2,3,4,4)

通过将子集设置为单个嵌套并使用 for 循环,我已经实现了一次所需的输出:

tmp <- subset(df, Nest == "a")
tmp$change <- tmp$Weight
for(x in 2:(length(tmp$Nest))){
tmp$change[x] <- tmp$Weight[(x)] - tmp$Weight[(x-1)]
}

但是当我尝试将其放入 ddply

df2 <- ddply(df, "Nest", function(f) {
f$change <- f$Weight
for(x in 2:(length(f$Nest))){
f$change <- f$Weight[(x)] - f$Weight[(x-1)]
}
})

输出给出一个空白数据框(0 个变量的 0 个观测值)。

我是否以正确的方式处理这个问题,但代码错误?或者有更好的方法吗?

提前致谢!

最佳答案

试试这个:

library(dplyr)
df %>% group_by(Nest) %>% mutate(Change = c(Weight[1], diff(Weight)))

或者仅使用 R 的基数

transform(df, Change = ave(Weight, Nest, FUN = function(x) c(x[1], diff(x))))

关于引用 data.frame 的前几行来计算 R 中的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27232087/

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