0

我在 R 中有这个数据框:

steps   day         month  
4758    Tuesday     December
9822    Wednesday   December
10773   Thursday    December

我想遍历数据框并根据月份列中的值将函数应用于步骤列。我正在尝试计算每个月每个工作日的平均步数。

我想像这样输出到一个新的数据框,工作日重复,但我每天只有平均值:

average.steps   day         month
4500            Tuesday     December
9000            Wednesday   December
1000            Thursday    December

我可以计算出如何计算整个数据框的平均值,但想使用 for 循环将其仅应用于同一个月的步长值。

avgsteps <- ddply(DATA, "day", summarise, msteps = mean(steps))

我对 for 函数的基本想法是:

f <- function(m in month) {ddply(DATA, "day", summarise, msteps = mean(steps))}

但它不会处理它并抛出错误:

Error: unexpected 'in' in "f <- function(m in"

任何帮助将不胜感激!

编辑:

所以我尝试了@agstudy 的建议修复(如下),它得到了正确的数据结构(每个工作日每个月的单个值),但分配给每一天的值是相同的。我有点困惑可能出了什么问题。

steps.month.day.avg <- ddply(steps.month.day, .(fitbit.day,fitbit.month), summarise, msteps = mean(steps))
4

1 回答 1

3

不需要在这里循环,你应该改变变量来分割数据帧,

 ddply(DATA, .(day,month), summarise, msteps = mean(steps))
于 2013-10-15T17:21:12.717 回答