首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对数据进行分组以最小化方差,同时保持R中数据的顺序

如何对数据进行分组以最小化方差,同时保持R中数据的顺序
EN

Stack Overflow用户
提问于 2015-02-13 22:13:43
回答 2查看 1.2K关注 0票数 1

我有一个包含两列的数据框(760行),名为Price和Size。我想根据价格将数据放在4/5组中,这样可以最小化每组中的方差,同时保留订单大小(按升序排列)。Jenks自然中断优化将是一个理想的函数,但是它没有考虑大小的顺序。

基本上,我有类似下面的数据(有更多的数据)

代码语言:javascript
复制
Price=c(90,100,125,100,130,182,125,250,300,95)

Size=c(10,10,10.5,11,11,11,12,12,12,12.5)  

mydata=data.frame(Size,Price)

我想对数据进行分组,以最小化每个组中价格的差异: 1)尺寸值:例如,前两个价格90和100不能在不同的组中,因为它们的大小相同& 2)大小的顺序:例如,如果第一组包括观察值( or ) 1-2,第二组包括观察值3-9,则观察值10只能进入第二组或第三组。

有人能给我一些建议吗?也许已经有一些我找不到的函数了?

EN

回答 2

Stack Overflow用户

发布于 2015-02-13 22:51:11

这就是你要找的东西吗?使用dplyr包,分组非常容易。%>%可以理解为"then do“,这样你就可以根据需要组合多个动作。

有关详细信息,请参阅http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html

代码语言:javascript
复制
library("dplyr")
Price <– c(90,100,125,100,130,182,125,250,300,95)
Size <- c(10,10,10.5,11,11,11,12,12,12,12.5)  

mydata <- data.frame(Size,Price) %>% # "then"
  group_by(Size) # group data by Size column

mydata_mean_sd <- mydata %>%  # "then"
  summarise(mean = mean(Price), sd = sd(Price)) # calculate grouped
                                         #mean and sd for illustration
票数 0
EN

Stack Overflow用户

发布于 2020-03-04 12:33:11

我也遇到过类似的问题,最好地将一天分成4个“负载块”。当然,相邻的时间段必须结合在一起。

这不是一个优雅的解决方案,但我编写了自己的函数,该函数首先在指定的断点处拆分已排序的序列,然后使用这些断点计算和(SDCM)(使用Wiki中的jenks方法的基础算法)。

然后迭代所有有效的断点组合,并选择产生最小和(SDCM)的点集。

随着可能的断点组合数量的增加,将很快变得难以管理,但它适用于我的数据集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28501537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档