如何创建表格显示r

时间:2016-03-30 16:48:01

标签: r frequency dummy-variable

我是R的新秀 我想创建一个所有虚拟变量的频率表,我有一个像这样的数据

ID Dummy_2008 Dummy_2009 Dummy_2010 Dummy_2011 Dummy_2012 Dummy_2013
1  1          1          0          0          1          1
2  0          0          1          1          0          1
3  0          0          1          0          0          1
4  0          1          1          0          0          1
5  0          0          0          0          1          0
6  0          0          0          1          0          0

我想看看每个变量的总频率如何

            0    1   sum
Dummy_2008  5    1   6
Dummy_2009  4    2   6
Dummy_2010  3    3   6
Dummy_2011  4    2   6
Dummy_2012  4    2   6
Dummy_2013  2    4   6

我只知道使用table(),但我一次只能做一个变量。 我有很多时间认真的虚拟变量,我想看看它们的趋势。

非常感谢你的帮助 特伦斯

2 个答案:

答案 0 :(得分:1)

result = as.data.frame(t(sapply(dat[,-1], table)))        
result$Sum = rowSums(result)

           0 1 Sum
Dummy_2008 5 1   6
Dummy_2009 4 2   6
Dummy_2010 3 3   6
Dummy_2011 4 2   6
Dummy_2012 4 2   6
Dummy_2013 2 4   6

说明:

sapply将函数应用于数据框的每一列并返回一个矩阵。因此,sapply(dat[,-1], table)会为每列返回一个输出为table的矩阵(第一列除外,我们已将其排除)。

需要对矩阵进行转置,以便原始数据框中的列名称为行,虚拟值为列,因此我们使用t(转置)函数。

我们需要一个数据框,而不是一个矩阵,所以我们将整个内容包装在as.data.frame中。

接下来,我们希望另一列给出值的总数,因此我们使用rowSums函数。

答案 1 :(得分:1)

以下是使用mtabulateaddmargins

的其他选项
library(qdapTools)
addmargins(as.matrix(mtabulate(df1[-1])),2)
#           0 1 Sum
#Dummy_2008 5 1   6
#Dummy_2009 4 2   6
#Dummy_2010 3 3   6
#Dummy_2011 4 2   6
#Dummy_2012 4 2   6
#Dummy_2013 2 4   6