【发布时间】:2014-12-19 23:56:44
【问题描述】:
表格打印行和列以及交叉点的出现次数。我有一张几乎全为零的大桌子。表格是否可以按行打印,第一列为表格行的名称,第二列为表格列的名称,第三列为出现次数。
library(data.table)
nSamples=10
set.seed(13)
d <- data.table(id=sample(1001:1010,nSamples,replace=T),
own=sample(paste('h-',7:10,sep=''),nSamples,replace=T))
tbl<-table(d)
print(tbl)
输出看起来像
own
id h-10 h-8 h-9
1001 0 1 2
1003 1 0 0
1004 1 0 0
1006 0 1 0
1008 0 0 2
1009 1 0 0
1010 0 0 1
我想要的输出是
id own Freq
1003 h-10 1
1004 h-10 1
1009 h-10 1
and so on
注意:问题是通过更正 set.seed 来修改的。
下面提供的答案给出了预期的结果
R> subset(as.data.frame(table(d)),Freq>0)
id own Freq
2 1003 h-10 1
3 1004 h-10 1
6 1009 h-10 1
8 1001 h-8 1
11 1006 h-8 1
15 1001 h-9 2
19 1008 h-9 2
21 1010 h-9 1
【问题讨论】:
-
as.data.frame(table(d))将获得所需的格式 -
使用
set.seed(123)设置种子 -
如果您想将结果子集化为仅大于 0 的值,您可以使用 data.table:
as.data.table(table(d))[N > 0]