基于R对数据中分类变量按照某一个分类变量的类别计算频数

在问卷数据分析中,针对性别、年龄、职业和学历等多个分类变量,利用R语言的table函数计算目标变量(如工资等级)上的频数,形成多维交叉列联表,以揭示不同变量在目标变量上的分布情况。

常常在问卷数据分析中,我们需要根据多个分类变量,比如性别,年龄,职业,学历等,计算在某一个目标变量,如工资水平(分为多个等级)上 的频数,得到一个多维的交叉列联表,从而方便了解这些在变量(年龄,职业,学历)在目标变量的分布水平。

得到结果如下图所示。

代码说明

#导入数据
library(readxl)
da <- read_excel("da.xlsx", sheet = "Sheet1")
Da <- data.frame(da[,c(2:15)])
Da[which(Da[,12]>3),12] <- 3
#下面这个让数据框中的所有变量变成因子,但是前提要求Da只为dataframe类型
for (i in colnames(Da)){
  Da[,i]<-as.factor(Da[,i])
}
t=0
#建立循环,由于table每次只能得到一个交叉表,所以想法就是通过循环把
#所有其它变量和目标变量的交叉结果保存到数据框中,再合并得到最终的
for (i in colnames(Da)){
  x1=table(Da[,i],Da[,12],dnn =c(colnames(Da[i]),"kids"))
  table1 <- as.data.frame(matrix(x1[1:length(x1)],nrow = length(row.names(x1)), ncol = length(colnames(x1))))
  colnames(table1) <- colnames(x1)
  y<- rownames(x1)
  x <- rep(colnames(Da[i]),length(row.names(table1)))
  das 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值