我cl_tabulate
用来获取有关 2009 年 KDD Cup 样本数据的一些统计数据。df.trainbase
这是我正在使用的数据的示例部分...
> sample <- df.trainbase[4100:4110,220:223]
> sample
Var220 Var221 Var222 Var223
4100 qcEoI0_ oslk fXLavGi LM8l689qOp
4101 OTg4K41 oslk N9WHLT9 LM8l689qOp
4102 54petck oslk eEfa_vf LM8l689qOp
4103 m_dAM23 oslk nFzwuDg LM8l689qOp
4104 ROeipLp zCkv K2SqEo9 LM8l689qOp
4105 4UxGlow oslk catzS2D LM8l689qOp
4106 rDm6pd1 oslk Q53Rkup LM8l689qOp
4107 XqwYlW4 oslk sMvE4Qn LM8l689qOp
4108 EncOVQC oslk 8AGQQMs LM8l689qOp
4109 b0v7gqP d0EEeJi 80xXg6w LM8l689qOp
4110 3aBfc8E oslk aXcOEra LM8l689qOp
> tabs <- llply(sample,cl_tabulate)
选项卡列表如下所示(显示 2 个列表元素):
> tabs
$Var220
values counts
1 qcEoI0_ 1
2 OTg4K41 1
3 54petck 1
4 m_dAM23 1
5 ROeipLp 1
6 4UxGlow 1
7 rDm6pd1 1
8 XqwYlW4 1
9 EncOVQC 1
10 b0v7gqP 1
11 3aBfc8E 1
$Var221
values counts
1 oslk 9
2 zCkv 1
3 d0EEeJi 1
我可以获得指定列表元素(即数据列)的最流行级别值的数量,如下所示:
> max(tabs[[1]]$counts)
[1] 37216
但是如何获得max(tabs[[i]]$counts)
所有人i
(例如,llply()
如果可能,使用)?我需要最流行级别的值以及每列出现的次数:
理想情况下,最终结果是每个变量的简单行,带有变量名称、最普遍的因子值和出现次数——以 Var196 为例:
Var196 1K8T 49550
是否可以将嵌套列表(例如上面的“选项卡”)传递给llply()
并将其指向结构的列级别“下方”的某个元素?我没看到。
...解决方案(如下)是使用melt()
> m = melt(tabs, id="values")
> m <- m[-2]
> m
values value L1
1 qcEoI0_ 1 Var220
2 OTg4K41 1 Var220
3 54petck 1 Var220
4 m_dAM23 1 Var220
5 ROeipLp 1 Var220
6 4UxGlow 1 Var220
7 rDm6pd1 1 Var220
8 XqwYlW4 1 Var220
9 EncOVQC 1 Var220
10 b0v7gqP 1 Var220
11 3aBfc8E 1 Var220
12 oslk 9 Var221
13 zCkv 1 Var221
...
这正是我所需要的。