我和R和plyr有点挣扎,我不知道如何获得我感兴趣的结果。我的数据框看起来像这样:
Region Price
Alentejano 71
Andalucia 30
Bordeaux 135
Bordeaux 500
Bordeaux 185
等等。我想得到每个地区的平均值,到目前为止我尝试使用plyr
和代码:
means <- ddply(data, ~ Region, summarise, mean = mean(Price), sd=sd(Price))
成功地给出了我在每个变量有多个遵守的地方的标准偏差。我没有任何办法。我如何制作一个代码,让我有多次观察的平均值,但如果只有一个遵守则留下数字?
答案 0 :(得分:1)
根据您的代码,您没有使用@XmlAccessorType
,而是XmlAccessType.FIELD
。当您采用一次观察的平均值时,它将返回该观察值:
关于您的示例数据:
dplyr
返回:
plyr
如您所见,对于“Alentejano”和“Andalucia”地区,将返回与原始数据中相同的值。
使用您提供的代码:
aggregate(Price ~ Region, dat, FUN = mean)
我明白了:
Region Price
1 Alentejano 71.0000
2 Andalucia 30.0000
3 Bordeaux 273.3333
这是预期的&amp;有效的结果。
如果您同时使用library(plyr)
ddply(dat, ~ Region, summarise, mean = mean(Price), sd=sd(Price))
和 Region mean sd
1 Alentejano 71.0000 NA
2 Andalucia 30.0000 NA
3 Bordeaux 273.3333 197.8846
,请确保在plyr
之前加载dplyr
。否则,您将收到以下警告消息:
plyr
使用过的数据:
dplyr
答案 1 :(得分:0)
这将为您提供所需的答案
means <- ddply(data, ~ Region, summarise, mean = mean(Price[duplicated(Price)]), sd=sd(Price))