我有一个包含两列的数据框(760行),名为Price和Size。我想根据价格将数据放在4/5组中,这样可以最小化每组中的方差,同时保留订单大小(按升序排列)。Jenks自然中断优化将是一个理想的函数,但是它没有考虑大小的顺序。
基本上,我有类似下面的数据(有更多的数据)
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只能进入第二组或第三组。
有人能给我一些建议吗?也许已经有一些我找不到的函数了?
发布于 2015-02-13 22:51:11
这就是你要找的东西吗?使用dplyr包,分组非常容易。%>%可以理解为"then do“,这样你就可以根据需要组合多个动作。
有关详细信息,请参阅http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html。
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发布于 2020-03-04 12:33:11
我也遇到过类似的问题,最好地将一天分成4个“负载块”。当然,相邻的时间段必须结合在一起。
这不是一个优雅的解决方案,但我编写了自己的函数,该函数首先在指定的断点处拆分已排序的序列,然后使用这些断点计算和(SDCM)(使用Wiki中的jenks方法的基础算法)。
然后迭代所有有效的断点组合,并选择产生最小和(SDCM)的点集。
随着可能的断点组合数量的增加,将很快变得难以管理,但它适用于我的数据集。
https://stackoverflow.com/questions/28501537
复制相似问题