【发布时间】:2012-08-14 13:02:39
【问题描述】:
我有一个包含 41 行和 21 列的数据集。在 DF 中,每一行代表一天中 15 分钟间隔(从上午 10 点到晚上 8 点)的能量数据。每列代表一个月内的选定日期。
我需要使用以下公式计算每列中两行的负载可变性(标准偏差/平均值)。
即在第 1 和第 2 之间; 1、2、3;第 1-4 名;第 1-5 名;等每列的元素。
我不断在“lv”中获得 NA 值,不知道为什么。最终结果,lv 应该有一个 41x21 的数据框,与 df 相同,但具有负载可变性。
此外,除了负载可变性之外,我如何在循环中获得 2.5 和 97.5 个百分位数?
x <- df[1:41,1:21]
#calculate load variability
count = 0
i=1{
for (i in 1:41){
count = count+1
mean = sum (x[1:l,])/count
diff = ((x-mean)^2)
lv= sqrt((diff/(count+1)-1)/mean)
i = i+1
}
}
lv
lv 以空值 (NA) 结束。
【问题讨论】:
-
首先,您在内部重新分配
x,这意味着,在您的循环范围内,您将丢失原始数据。 -
您是要计算每一行的 sd/mean,还是真的要计算循环中前
i行的所有数据? -
我正在尝试对每一行进行 sd/mean。
-
第一:
df是什么?下一步:您将 x 从 41 x 63 数组减少到 1 x 63 数组,因此下一次通过循环时,您将超过 x 的当前尺寸。您忽略了发布错误消息。 -
问题仍然不清楚,即使在编辑之后。您参考 beweeen 列的负载可变性。但是,您的公式只是 sd/mean 是对一组数据的度量。您还说您希望结果具有与原始数据相同的维度。那么,您希望第一行中的第一个条目是什么?单个数据点的标准差/平均值,即 0?
标签: r for-loop percentile