我生成了一个数据框,通过融化原始数据框并应用排名函数,可以为我提供前n个变量及其相关值。我的排名数据框如下所示:
SysID variable value Class1 Class2
1 1 S.noun_noun 0.13121019 Open Open
2 1 S.verb_verb 0.12611465 Open Open
3 1 S.det_det 0.04076433 Closed Closed
4 1 S.verb_noun 0.03821656 Open Open
5 1 S.prep_det 0.03312102 Closed Closed
6 2 S.noun_noun 0.19791667 Open Open
7 2 S.verb_verb 0.13750000 Open Open
8 2 S.det_det 0.04375000 Closed Closed
9 2 S.prn_prn 0.03958333 Closed Closed
10 2 S.coord_prep 0.03750000 Closed Closed
11 3 S.noun_noun 0.16730769 Open Open
12 3 S.verb_verb 0.14615385 Open Open
13 3 S.det_det 0.05384615 Closed Closed
14 3 S.coord_prep 0.04423077 Closed Closed
15 3 S.prep_prep 0.04230769 Closed Closed
现在我尝试将其打印到LaTeX文档中。我希望它看起来像这样:
1 2 …
variable value variable value
1 S.noun_noun 0.13121019 S.noun_noun 0.19791667
2 S.verb_verb 0.12611465 S.verb_verb 0.1375
3 S.det_det 0.04076433 S.det_det 0.04375
4 S.verb_noun 0.03821656 S.prn_prn 0.03958333
5 S.prep_det 0.03312102 S.coord_prep 0.0375
我发现tabular
包中的tables
可能会执行此操作,但我无法确定要使用的正确公式。有人可以推荐一个表格式,可以格式化这种格式的数据,或者使用另一个包/函数吗?谢谢你的帮助。
答案 0 :(得分:0)
这是一种非常手动的方式,因此,如果您的SysID
由多个级别组成,这可能看起来不太可行(在编辑之前,我注意到您的原始SysID
达到了8级) 。这假设您的数据位于名为DF
的对象中,并进行了适当更改:
g<-split(DF[,2:3], DF$SysID)
#here you merge them side by side
#note that the variable names are not right
#add a new row with SysID
ggg<- rbind.data.frame(c(g[[1]],g[[2]],g[[3]]))
gggnames <- c("variable 1", "value 1", "variable 2", "value 2", "variable 3", "value 3")
colnames(ggg) <- gggnames
stargazer(ggg, summary=FALSE)
这将输出一个LaTeX
表供您复制和粘贴。
@docendo评论中提供了这个库的单行解决方案:
stargazer( do.call(cbind, split(DF[2:3], DF$SysID)), summary=FALSE)
同样,DF
是数据的对象。
如果表太长,xtable
解决方案也可以运行。再次,从评论中取出并假设原始的SysID,这表明后处理(从第一个表中删除底部,从第二个表中删除顶部是最可能的解决方案,将其放在一个表中):
gggg <- do.call(cbind, split(DF[2:3], DF$SysID))
xtable(gggg[,1:8])
xtable(gggg[,9:16])