R 使用列表和数据帧进行聚合,函数如何知道聚合级别?

R 使用列表和数据帧进行聚合,函数如何知道聚合级别?,r,aggregate,R,Aggregate,我只是在使用聚合函数(参见下面的简短示例)。但聚合函数如何知道我的“随机数”中的哪个属于哪个国家?我的名单还保存着这些国家吗?还是只是程序问题 df <- data.frame(country = c("Canada","Canada","Canada","US","US"), state = c("state1", "state2", "

我只是在使用聚合函数(参见下面的简短示例)。但聚合函数如何知道我的“随机数”中的哪个属于哪个国家?我的名单还保存着这些国家吗?还是只是程序问题


df <- data.frame(country = c("Canada","Canada","Canada","US","US"),
state = c("state1", "state2", "state3", "state4", "state5"),
randomnumb = c(1:5)
                )

list <- list(df$randomnumb)

dfaggregate <- aggregate(list,
  by = list(country = df$country),
  FUN = mean)



df这只是程序问题。让我们首先计算上述数据的结果:

aggregate(list,
          by = list(country = df$country),
          FUN = mean)
  country X1.5
1  Canada  2.0
2      US  4.5
现在让我们把国家的顺序颠倒过来:

aggregate(list,
          by = list(country = rev(df$country)),
          FUN = mean)
  country X1.5
1  Canada  4.0
2      US  1.5
正如你所看到的,结果是不同的;这是您对此data.frame的预期:

data.frame(country = c("US", "US", "Canada","Canada","Canada"),
           state = c("state1", "state2", "state3", "state4", "state5"),
           randomnumb = c(1:5))
所以这取决于顺序。正如Duck所说,尝试使用公式符号来明确:

aggregate(randomnumb~country, data = df, mean)
  country randomnumb
1  Canada        2.0
2      US        4.5

您最好使用公式表示法
aggregate(randomnub~country,data=df,sum)
,因为有时列表可能会令人困惑@Duck,但是要非常小心,因为运行
mean
在列表和公式样式
aggregate
之间有不同的默认值:。@Parfait Nice info!谢谢