R中的双向分类文本频率表

时间:2016-06-07 21:28:40

标签: r text frequency

如何在R中创建双向排序表格?我有两个变量。第一个只有4个值。第二个接受许多字符串值。我想最终得到一个表,其中列是4个值,每行是一个字符串。频率出现在桌子的主体中。我也想对它进行排序 - 不是按字母顺序排列,而是按字母顺序排列 - 有希望按照整体频率,单词出现的频率(不考虑4个类别),但如果仅按频率排序,我也会很高兴在一栏中。关于如何创建这个的任何提示?最终目标是创建一个LaTeX表。

我记住了这种数据。

CrossOriginFilter

2 个答案:

答案 0 :(得分:3)

如果没有看到你的数据,我可以假设你可以使用table()函数:

有一些玩具数据:

> head(df,10)
   value    string
1      1 fruitcake
2      2     lemon
3      4   almonds
4      2     lemon
5      2     lemon
6      4  biscuits
7      1 fruitcake
8      2  biscuits
9      1  biscuits
10     3   almonds

申请表格():

> table(df$string,df$value)

            1 2 3 4
  almonds   1 2 2 2
  biscuits  2 1 1 3
  fruitcake 3 1 1 3
  lemon     2 5 5 1
  peanuts   4 2 5 4

您可以使用xtable()包中的xtable函数来提供相应的LaTeX代码:

> xtable(table(df$string,df$value))

答案 1 :(得分:3)

您可以order table

设置种子以获得可重现的结果:

set.seed(47)
# sample data
df <- data.frame(cat = sample(1:4, 100, replace=TRUE), 
                 string = sample(c("dog", "cat", "horse", "frog", "liger", "ligon", "tigon"), 100, replace = TRUE))

制作一张桌子:

tab <- table(df$string, df$cat)
tab

#       1 2 3 4
# cat   7 4 2 4
# dog   2 1 4 2
# frog  2 3 5 1
# horse 4 3 3 1
# liger 4 3 2 2
# ligon 5 4 5 5
# tigon 5 4 7 6

通过将行与其总和建立索引(按降序为负)来对其进行排序:

ordered_tab <- tab[order(-rowSums(tab)),]
ordered_tab

#       1 2 3 4
# tigon 5 4 7 6
# ligon 5 4 5 5
# cat   7 4 2 4
# frog  2 3 5 1
# horse 4 3 3 1
# liger 4 3 2 2
# dog   2 1 4 2

获取有序表的乳胶代码:

knitr::kable(ordered_tab, 'latex')

# \begin{tabular}{l|r|r|r|r}
# \hline
#   & 1 & 2 & 3 & 4\\
# \hline
# tigon & 5 & 4 & 7 & 6\\
# \hline
# ligon & 5 & 4 & 5 & 5\\
# \hline
# cat & 7 & 4 & 2 & 4\\
# \hline
# frog & 2 & 3 & 5 & 1\\
# \hline
# horse & 4 & 3 & 3 & 1\\
# \hline
# liger & 4 & 3 & 2 & 2\\
# \hline
# dog & 2 & 1 & 4 & 2\\
# \hline
# \end{tabular}