r - 以 "transposed"方式打印因子汇总

标签 r printing transpose summary r-factor

我有一个因子变量,我想检索每个级别的计数。使用 summary() 函数很容易:

> h <- rnorm(100, 170, 10)
> hf <- cut(h, breaks=10)
> summary(hf)
(142,147] (147,153] (153,158] (158,163] (163,169] (169,174] (174,180] (180,185] (185,190] 
        5         3         7        20        11        23        12        11         6 
(190,196] 
        2

但我希望它包含在 knitr 报告中,所以我更喜欢一种更人性化的数据显示方式。最明显的方法是转置它,所以我得到这样的结果:

(142,147]           5
(147,153]           3
(153,158]           7
(158,163]          20
(163,169]          11
(169,174]          23
(174,180]          12
(180,185]          11
(185,190]           6
(190,196]           2

问题是:实现这一目标的最佳方法是什么?
(我所说的“最好”是指“干净、高效、紧凑且没有任何副作用”)

下面我概述了我尝试过的几种方法以及为什么我对其中任何一种都不满意

作为.data.frame

> r <- as.data.frame(summary(hf))
> colnames(r) <- ""
> r

(142,147]  5
(147,153]  3
(153,158]  7
(158,163] 20
(163,169] 11
(169,174] 23
(174,180] 12
(180,185] 11
(185,190]  6
(190,196]  2

我不喜欢我使用临时变量来存储数据框和一行代码只是为了抑制第二列标题(默认情况下读取 summary(hf),而不是非常有帮助)。如果我可以在将摘要转换为 data.frame 时隐藏列名,或者通过使用一些打印函数/参数,那将是完美的。

表格

> as.data.frame(table(hf))
          hf Freq
1  (142,147]    5
2  (147,153]    3
3  (153,158]    7
4  (158,163]   20
5  (163,169]   11
6  (169,174]   23
7  (174,180]   12
8  (180,185]   11
9  (185,190]    6
10 (190,196]    2

这里的标题更具可读性,但现在我有不需要的行名称。这引导我找到下一个解决方案。

写表

> write.table(as.data.frame(table(hf)), col.names=FALSE, row.names=FALSE)
"(142,147]" 5
"(147,153]" 3
"(153,158]" 7
"(158,163]" 20
"(163,169]" 11
"(169,174]" 23
"(174,180]" 12
"(180,185]" 11
"(185,190]" 6
"(190,196]" 2

只要因子水平名称的长度相同就可以了。当它们的长度不同时,事情就会开始错位:

> write.table(as.data.frame(table(h>170)), col.names=FALSE, row.names=FALSE)
"FALSE" 51
"TRUE" 49

如果有人读过到目前为止,让我重复我的问题:
获取“转置”表中显示的每个因子级别的出现次数的最佳方法是什么,并且可能没有任何副作用?

最佳答案

看起来你只是想要这个:

setNames(as.data.frame(summary(hf)), "")

当然你也可以将你的代码包装在一个函数中......

关于r - 以 "transposed"方式打印因子汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23173022/

相关文章:

android - 如何获取 Zebra 打印机的 IP 地址和端口号?

python - 如何使用 Python 将 CSV 数据从宽格式转置为长数据集

google-sheets - 如何将数据移动到 Google 表格中右侧的空白单元格?

php - 转置和展平二维索引数组,其中行的长度可能不相等

r - 通过另一列的成对组合计算一列的唯一值并按R中的第三列分组

r - 使用R跳过csv文件中的注释行

r - 我的函数在 R 控制台中有效,但在 R 脚本中无效

css - Chrome、打印和百分比 div

getParseData 的反转 : from parsed code back to code

java - 使用 javafx 从 webview 获取打印