计算r中数据帧内子集的平均值

时间:2014-06-12 21:56:10

标签: r csv subset mean

我是R的新手,正在努力计算子集的平均值。 我在“datafolder”中有12个csv文件。每个csv中的列名称是“订单日期”,“ID”,“杯形蛋糕”和“松饼”。除了一些NA之外,最后3列中的所有值都是数值。 我需要为每个ID(商店编号)计算每种蛋糕的平均数量。 在下面的代码中,我试图将所有csv文件转换为数据帧。 我希望能够调用每个蛋糕列的平均值,因此我尝试将“杯形蛋糕”和“松饼”分组,以便在选择ID或ID范围时可以找到子集的平均值。 / p>

 cakemean <- function(directory, cake, ID=1:12) {    
+                 files_list <- dir("datafolder", full.names = TRUE)     
+                 dat <- data.frame()      
+                 for (i in 1:12) {              
+                 dat <- rbind(dat, read.csv(files_list[i]))    }    
+                 dat_subset <- subset(dat, dat$ID == ID)     
+                 mean(dat_subset$cupcake, na.rm = TRUE)
+                 mean(dat_subset$muffin, na.rm = TRUE)
+               
+         }
>         cakemean("datafolder", "cupcake", 1)
[1] 0.5528041
> cakemean("datafolder", "muffin", 1)
[1] 0.5528041
> cakemean("datafolder", "cupcake", 1:5)
[1] 0.5528041

当我打电话给“cakemean”时,我得到的值不是所选蛋糕的平均值。无论我选择“杯形蛋糕”还是“松饼”,我都会获得相同的价值,如果我没有选择蛋糕并且只选择ID,我仍然会得到相同的价值。

我一直在寻找解决方案,但我似乎总是遇到平均计算问题。我尝试过colMeans,这比上面的方法没那么有用。我需要函数可重用,因为稍后我可能需要它来按订单日期计算平均值或中值。

有什么建议吗?

0 个答案:

没有答案