R 如何使用NAN将单个时间点标准误差列添加到数据帧(24小时内时间点周平均值的SE)
我需要画一幅老鼠体温图。我在七天内每隔15分钟收集一次数据点。我还计算了绘图中每个时间点的平均温度。下一步是计算每个平均温度的标准误差,考虑到所有七天的温度读数。这是我使用的扩展数据的图像: 我还有一个单独的压缩数据框,它是每个时间点七天内的平均温度,所以24小时内每个时间点只有一个温度读数。它有96行,只包含时间和平均时间的列24 使用下面的代码,我只能为所有时间点计算一个标准错误(我知道这是错误的,但我花了很长时间才找到解决方案)。我也无法从压缩的24小时数据集中计算标准误差,因为不存在整整七天的温度 将三只小鼠的平均温度(7天)列添加到数据框“df”R 如何使用NAN将单个时间点标准误差列添加到数据帧(24小时内时间点周平均值的SE),r,nan,R,Nan,我需要画一幅老鼠体温图。我在七天内每隔15分钟收集一次数据点。我还计算了绘图中每个时间点的平均温度。下一步是计算每个平均温度的标准误差,考虑到所有七天的温度读数。这是我使用的扩展数据的图像: 我还有一个单独的压缩数据框,它是每个时间点七天内的平均温度,所以24小时内每个时间点只有一个温度读数。它有96行,只包含时间和平均时间的列24 使用下面的代码,我只能为所有时间点计算一个标准错误(我知道这是错误的,但我花了很长时间才找到解决方案)。我也无法从压缩的24小时数据集中计算标准误差,因为不存在整
df=cbind(df,“平均温度”=rowMeans(df[,3:5],na.rm=TRUE))
首先,尝试计算每个时间点的标准偏差
times=unique(df$time)
函数实现每行的单个标准错误
for (current_time in times){
df$se=sd(df$mean_temp24, na.rm=T)/sqrt(3-1)
}
理想情况下,我最终会得到一个数据帧,该数据帧是24小时温度数据的96行(每行间隔15分钟时间点),其中的值是每个时间点七个温度的平均值(“数据帧图像中的平均温度”)。我还有一个额外的标准误差列,它考虑了用于计算最终24小时数据集中平均温度的7个温度值
实际输出是完整数据集中每个时间点的单一、相同的SE,而不是压缩到24小时。使用plyr包中的ddply。函数f为dt和时间的每个唯一组合调用:
f = function(x) {
n3 = length(which(!is.na(x[,3])))
n4 = length(which(!is.na(x[,4])))
n5 = length(which(!is.na(x[,5])))
data.frame(
mean3 = mean(x[,3], na.rm=TRUE),
mean4 = mean(x[,4], na.rm=TRUE),
mean5 = mean(x[,5], na.rm=TRUE),
se3 = sd(x[,3], na.rm=TRUE)/sqrt(n3),
se4 = sd(x[,4], na.rm=TRUE)/sqrt(n4),
se5 = sd(x[,5], na.rm=TRUE)/sqrt(n5)
)
}
ddply(df, .(dt,time), f)
非常感谢,@NielsHolst。我尝试将其应用于我的数据并收到此错误:“错误在
[.data.frame
(x,4):未定义的列被选中”.知道为什么会发生这种情况吗?另一个问题…我实际上使用了一大堆这样的数据集,有些数据集的温度列在一到四只不同的老鼠之间,而不是我提供的样本数据集,它有三只老鼠。有没有一种方法可以一次将此函数应用到所有老鼠上(只要我让它工作起来),可能使用tapply()?