Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用NAN将单个时间点标准误差列添加到数据帧(24小时内时间点周平均值的SE)_R_Nan - Fatal编程技术网

R 如何使用NAN将单个时间点标准误差列添加到数据帧(24小时内时间点周平均值的SE)

R 如何使用NAN将单个时间点标准误差列添加到数据帧(24小时内时间点周平均值的SE),r,nan,R,Nan,我需要画一幅老鼠体温图。我在七天内每隔15分钟收集一次数据点。我还计算了绘图中每个时间点的平均温度。下一步是计算每个平均温度的标准误差,考虑到所有七天的温度读数。这是我使用的扩展数据的图像: 我还有一个单独的压缩数据框,它是每个时间点七天内的平均温度,所以24小时内每个时间点只有一个温度读数。它有96行,只包含时间和平均时间的列24 使用下面的代码,我只能为所有时间点计算一个标准错误(我知道这是错误的,但我花了很长时间才找到解决方案)。我也无法从压缩的24小时数据集中计算标准误差,因为不存在整

我需要画一幅老鼠体温图。我在七天内每隔15分钟收集一次数据点。我还计算了绘图中每个时间点的平均温度。下一步是计算每个平均温度的标准误差,考虑到所有七天的温度读数。这是我使用的扩展数据的图像:

我还有一个单独的压缩数据框,它是每个时间点七天内的平均温度,所以24小时内每个时间点只有一个温度读数。它有96行,只包含时间和平均时间的列24

使用下面的代码,我只能为所有时间点计算一个标准错误(我知道这是错误的,但我花了很长时间才找到解决方案)。我也无法从压缩的24小时数据集中计算标准误差,因为不存在整整七天的温度

将三只小鼠的平均温度(7天)列添加到数据框“df”
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()?