将分组数据分成同样大小的子组gydF4y2Ba

36视图(30天)gydF4y2Ba
马克西米利安HauschelgydF4y2Ba
马克西米利安HauschelgydF4y2Ba 2021年8月5日gydF4y2Ba
你好,社区,gydF4y2Ba
我目前的项目我需要将一个表的值为每个组(母公司)10 eqaully大小的子组。在母公司排列等级值。通过创建的子组,等级秩序依然存在,因此,母公司的第一组包含最低10%的值,第二组父组包含下一个更大的10%堆栈(> 10% - 20%)的价值观等等。在接下来,我要给一个例子:gydF4y2Ba
Data = array2table (rand (1000 1));gydF4y2Ba
Data.Properties。VariableNames {1} =gydF4y2Ba“价值”gydF4y2Ba;gydF4y2Ba
ParentGroups = [1:1:10] ';gydF4y2Ba
数据。ParentGroups = repelem (ParentGroups, 100);gydF4y2Ba
Data = sortrows(数据,{gydF4y2Ba“ParentGroups”gydF4y2Ba,gydF4y2Ba“价值”gydF4y2Ba});gydF4y2Ba
我的第一个方法是创建每个组的十分位数,每个单独的母公司为10个同样大小的部分。这里的问题是,函数使用简单的输出十分位数的值,但没有参考位置的原始数据。对于创建十分位数,我使用下面的代码:gydF4y2Ba
decileFnc = @ (x) prctile (x, [0:10:100]);gydF4y2Ba
十分位数= varfun (decileFnc、数据gydF4y2Ba“GroupingVariables”gydF4y2Ba,gydF4y2Ba“ParentGroups”gydF4y2Ba,gydF4y2Ba“数据源”gydF4y2Ba1);gydF4y2Ba
十分位数。Fun_Value =字符串(deciles.Fun_Value);gydF4y2Ba
十分位数=[十分位数(:,1:2),正则表达式(deciles.Fun_Value,gydF4y2Ba“\ s +”gydF4y2Ba,gydF4y2Ba“分裂”gydF4y2Ba));gydF4y2Ba
doubleFnc = @ (x)双(x);gydF4y2Ba
十分位数=[十分位数(:,1:2),varfun (doubleFnc十分位数,gydF4y2Ba“数据源”gydF4y2Ba3:13)];gydF4y2Ba
最后一个代码块用于unstack varfun的输出,我只是分享它的完整性。gydF4y2Ba
我真的希望得到一些帮助,感激每一个答案。gydF4y2Ba
2的评论gydF4y2Ba
马克西米利安HauschelgydF4y2Ba
马克西米利安HauschelgydF4y2Ba 2021年8月5日gydF4y2Ba
编辑:gydF4y2Ba马克西米利安HauschelgydF4y2Ba 2021年8月5日gydF4y2Ba
你好彼得,gydF4y2Ba
你是对的,我在你刚刚描述的完全一致。对不起不明白了。gydF4y2Ba
标签并不一定需要会等分的值,而是一个指数,确定相应的等分(例如,每个值低于6类内等分应该分配数量6)gydF4y2Ba
谢谢你的提示!gydF4y2Ba

登录置评。gydF4y2Ba

接受的答案gydF4y2Ba

马克西米利安HauschelgydF4y2Ba
马克西米利安HauschelgydF4y2Ba 2021年8月6日gydF4y2Ba
我挣扎了一段时间,但最后发现自己来解决这个问题。如果任何人除了我在乎,这是我的解决方案:gydF4y2Ba
G = groupcounts(数据,2);gydF4y2Ba
G。GroupCount =双(G.GroupCount);gydF4y2Ba
我用groupconts确定各组父元素的数量gydF4y2Ba
fnc = @ (x) prctile (x, 10:10:100);gydF4y2Ba
十分位数= splitapply (fnc Data.Value Data.ParentGroups);gydF4y2Ba
一个函数找到家长团体内的十分位数,这次我splitapply使用gydF4y2Ba
D = [];gydF4y2Ba
创建了一个空数组,它将包含每个值的类内等分的一项指标gydF4y2Ba
为gydF4y2Bai = 1:10gydF4y2Ba
为gydF4y2Bas = 1:10gydF4y2Ba
Data.Value(高度(D) + 1: sum (G{1:我2}),1)< =十分位数(我的);gydF4y2Ba
D(高度(D) + 1:高度(D) + (ans), 1) = s;gydF4y2Ba
结束gydF4y2Ba
结束gydF4y2Ba
对于每个parentgroupgydF4y2Ba 我gydF4y2Ba ,循环测试如果其值小于或等于一个等分gydF4y2Ba 十分位数(我的)gydF4y2Ba 和比corrosponding分配指标gydF4y2Ba 年代gydF4y2Ba 维数组。gydF4y2Ba
数据(:,3)= array2table (D);gydF4y2Ba
连接与指标的值。gydF4y2Ba

答案(1)gydF4y2Ba

彼得·珀金斯gydF4y2Ba
彼得·珀金斯gydF4y2Ba 2021年8月6日gydF4y2Ba
1 > > x =兰特(16日);gydF4y2Ba
> > g = repmat((1:2), 8日,1);gydF4y2Ba
> > t =表(g, x)gydF4y2Ba
t =gydF4y2Ba
16gydF4y2Ba×gydF4y2Ba2表gydF4y2Ba
ggydF4y2BaxgydF4y2Ba
_gydF4y2Ba_________gydF4y2Ba
1 0.81472gydF4y2Ba
2 0.90579gydF4y2Ba
1 0.12699gydF4y2Ba
2 0.91338gydF4y2Ba
1 0.63236gydF4y2Ba
2 0.09754gydF4y2Ba
1 0.2785gydF4y2Ba
2 0.54688gydF4y2Ba
1 0.95751gydF4y2Ba
2 0.96489gydF4y2Ba
1 0.15761gydF4y2Ba
2 0.97059gydF4y2Ba
1 0.95717gydF4y2Ba
2 0.48538gydF4y2Ba
1 0.80028gydF4y2Ba
2 0.14189gydF4y2Ba
这是一个函数,它接受一个向量,并返回的四分位数箱每个值下降。gydF4y2Ba
函数gydF4y2Baqbin =乐趣(x)gydF4y2Ba
q =分位数(x, [0 .25。5。1]);gydF4y2Ba
qbin =离散化(x, q);gydF4y2Ba
结束gydF4y2Ba
该函数适用于每组表中的行。gydF4y2Ba
> > tq = rowfun (@fun tgydF4y2Ba“GroupingVariables”gydF4y2Ba,gydF4y2Ba“g”gydF4y2Ba)gydF4y2Ba
tq =gydF4y2Ba
16gydF4y2Ba×gydF4y2Ba3表gydF4y2Ba
ggydF4y2BaGroupCountgydF4y2BaVar3gydF4y2Ba
_gydF4y2Ba__________gydF4y2Ba____gydF4y2Ba
1 8 3gydF4y2Ba
1 8 1gydF4y2Ba
1 8 2gydF4y2Ba
1 8 2gydF4y2Ba
1 8 4gydF4y2Ba
1 8 1gydF4y2Ba
1 8 4gydF4y2Ba
1 8 3gydF4y2Ba
2 8 3gydF4y2Ba
2 8 3gydF4y2Ba
2 8 1gydF4y2Ba
2 8 2gydF4y2Ba
2 8 4gydF4y2Ba
2 8 4gydF4y2Ba
2 8 2gydF4y2Ba
2 8 1gydF4y2Ba
rowfun返回输出表的组织秩序。把四分位数箱数正确的原始数据行,使用第二个输出的排序。gydF4y2Ba
> >(~,奥德)= (t.g)进行排序;gydF4y2Ba
> > t.qbin(奥德)= tq.Var3gydF4y2Ba
t =gydF4y2Ba
16gydF4y2Ba×gydF4y2Ba3表gydF4y2Ba
ggydF4y2BaxgydF4y2BaqbingydF4y2Ba
_gydF4y2Ba_________gydF4y2Ba____gydF4y2Ba
1 0.81472 - 3gydF4y2Ba
2 0.90579 - 3gydF4y2Ba
1 0.12699 - 1gydF4y2Ba
2 0.91338 - 3gydF4y2Ba
1 0.63236 - 2gydF4y2Ba
2 0.09754 - 1gydF4y2Ba
1 0.2785 - 2gydF4y2Ba
2 0.54688 - 2gydF4y2Ba
1 0.95751 - 4gydF4y2Ba
2 0.96489 - 4gydF4y2Ba
1 0.15761 - 1gydF4y2Ba
2 0.97059 - 4gydF4y2Ba
1 0.95717 - 4gydF4y2Ba
2 0.48538 - 2gydF4y2Ba
1 0.80028 - 3gydF4y2Ba
2 0.14189 - 1gydF4y2Ba
使结果更容易确认,由内x集团;注意,四分位数箱数量。gydF4y2Ba
sortrows (t) [gydF4y2Baqbin“g”gydF4y2Ba])gydF4y2Ba
ans =gydF4y2Ba
16gydF4y2Ba×gydF4y2Ba3表gydF4y2Ba
ggydF4y2BaxgydF4y2BaqbingydF4y2Ba
_gydF4y2Ba_________gydF4y2Ba____gydF4y2Ba
1 0.12699 - 1gydF4y2Ba
1 0.15761 - 1gydF4y2Ba
1 0.63236 - 2gydF4y2Ba
1 0.2785 - 2gydF4y2Ba
1 0.81472 - 3gydF4y2Ba
1 0.80028 - 3gydF4y2Ba
1 0.95751 - 4gydF4y2Ba
1 0.95717 - 4gydF4y2Ba
2 0.09754 - 1gydF4y2Ba
2 0.14189 - 1gydF4y2Ba
2 0.54688 - 2gydF4y2Ba
2 0.48538 - 2gydF4y2Ba
2 0.90579 - 3gydF4y2Ba
2 0.91338 - 3gydF4y2Ba
2 0.96489 - 4gydF4y2Ba
2 0.97059 - 4gydF4y2Ba
1评论gydF4y2Ba
马克西米利安HauschelgydF4y2Ba
马克西米利安HauschelgydF4y2Ba 2021年8月7日gydF4y2Ba
谢谢你彼得分享您的解决方案。没有我雷达上的离散化功能。使整件事容易的方式。我会很高兴收到你的回答,因为它表明你也关心我的问题。另外我学到了一些新的东西,所以好的,谢谢:)gydF4y2Ba

登录置评。gydF4y2Ba

类别gydF4y2Ba

找到更多的在gydF4y2Ba描述性统计gydF4y2Ba在gydF4y2Ba帮助中心gydF4y2Ba和gydF4y2Ba文件交换gydF4y2Ba

社区寻宝gydF4y2Ba

找到宝藏在MATLAB中央,发现社区如何帮助你!gydF4y2Ba

开始狩猎!gydF4y2Ba