如何创建一个表来显示r中所有虚拟变量的频率
我是R的新手。 我想创建一个所有虚拟变量的频率表,我有这样一个数据如何创建一个表来显示r中所有虚拟变量的频率,r,frequency,dummy-variable,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
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
我想看看每个变量的总频率是怎样的
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(),但一次只能使用一个变量。
我有很多时间严重的虚拟变量,我想看看它们的趋势
非常感谢你的帮助
特伦斯
说明:
sapply
将函数应用于数据帧的每一列并返回矩阵。因此sappy(dat[,-1],table)
返回一个矩阵,每个列的table
输出(除了我们排除的第一列)
矩阵需要进行转置,以便原始数据帧中的列名是行,伪值是列,因此我们使用t
(转置)函数来实现这一点
我们需要的是数据帧,而不是矩阵,因此我们将整个内容包装为.data.frame
接下来,我们需要另一列给出值的总数,因此我们使用
rowSums
函数。这里是另一个使用mtabulate
和addmargins
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
非常感谢你的帮助。但是它显示了“行和中的错误(结果):'x'必须是数字”,我仍然在寻找错误的位置。错误告诉您至少有一列不是数字
str(result)
将显示每列的类。我不知道为什么表会出现这种情况,但是如果没有关于您的数据和代码的更多信息,很难说更多。非常感谢。我稍微修改一下你的代码,我得到了我想要的,虽然没有求和。“result1=as.data.frame(sappy(dat[,-1],table))result1_1=(t(result1)([-3,[-4,[-5,[-6,[-7,[-8,]))result1_1”非常感谢^^