R程序设计;双索引循环查找子集数据帧的平均值
我想运行一个使用三个索引的“for”循环。基本上,我想对一个数据帧进行子集划分,找到子集的平均值,然后将平均值放在一个新的数据帧中。我在运行这个循环时遇到问题;我得到的只是楠的 第一个索引用于匹配新数据帧的行(我称之为data.avg); 第二个索引用于索引将在子集条件的前半部分中使用的向量(日期值来自特定月份); 第二个索引与上述相同,但适用于子集条件的第二部分(该行与早餐/晚餐/零食相关) 例如,当我在没有循环的情况下运行平均值时R程序设计;双索引循环查找子集数据帧的平均值,r,loops,for-loop,indexing,subset,R,Loops,For Loop,Indexing,Subset,我想运行一个使用三个索引的“for”循环。基本上,我想对一个数据帧进行子集划分,找到子集的平均值,然后将平均值放在一个新的数据帧中。我在运行这个循环时遇到问题;我得到的只是楠的 第一个索引用于匹配新数据帧的行(我称之为data.avg); 第二个索引用于索引将在子集条件的前半部分中使用的向量(日期值来自特定月份); 第二个索引与上述相同,但适用于子集条件的第二部分(该行与早餐/晚餐/零食相关) 例如,当我在没有循环的情况下运行平均值时 mean(subset(data1,
mean(subset(data1,
months(data1$date) == "September" & data1$serving == "Breakfast")$unit)
我得到了正确的平均值。因此,我认为我的问题可能在于索引设置
我们将非常感谢您的任何帮助
谢谢
编辑;修正了上面的代码。结果数据帧如下所示
months bf.avg dinner.avg snack.avg
1 August 5 49 NaN
2 September 5 49 NaN
3 October 5 49 NaN
4 November 5 49 NaN
5 December 5 49 NaN
6 January 5 49 NaN
这就是我要找的
mean(subset(data1,
+ months(data1$date) == "September" & data1$serving == "Breakfast")$unit)
[1] 1
> mean(subset(data1,
+ months(data1$date) == "September" & data1$serving == "Dinner")$unit)
[1] 5
> mean(subset(data1,
+ months(data1$date) == "September" & data1$serving == "Snacks")$unit)
[1] 49
我的理解是,这些应该是数据1.avg[1,1:3]您在服务.index
中设置了“零食”,但在数据1
中有“零食”
然后在for循环中尝试以下代码:
data.avg[j,v+1] = mean(
subset(data1,months(data1$date) == month.name[i] & as.character(data1$serving) == serving.index[v])$units)
data.avg
months bf.avg dinner.avg snack.avg
1 August 1 5 49
2 September 1 5 49
3 October 1 5 49
4 November 1 5 49
5 December 1 5 49
6 January 1 5 49
帮助(“聚合”)
可能重复感谢!它修复了第一列,但其他两列似乎已关闭(我在不运行循环的情况下计算了平均值)。我认为所有晚餐的平均值应该是5(所有月份),所有零食的平均值应该是49。你知道为什么我会得到连续的数字(1:6)吗?你只修改了第二列:data.avg[j,2]谢谢!修正了错误。我错误地执行了索引。大部分是我的打字错误。
data.avg[j,v+1] = mean(
subset(data1,months(data1$date) == month.name[i] & as.character(data1$serving) == serving.index[v])$units)
data.avg
months bf.avg dinner.avg snack.avg
1 August 1 5 49
2 September 1 5 49
3 October 1 5 49
4 November 1 5 49
5 December 1 5 49
6 January 1 5 49