2
伯爵表和百分比表下面的脚本说明我的问题:“叠加”中的R
library(reshape2)
set.seed(1)
dummy.df <- data.frame(var_a=sample(letters[1:5],200,replace=TRUE),
var_b=sample(1:5,200,replace=TRUE),
stringsAsFactors=FALSE)
temp1 <- addmargins(table(dummy.df[,c("var_a","var_b")]),1)
temp2 <- formatC(addmargins(prop.table(table(dummy.df[,c("var_a","var_b")]),2),1)*100,digits=2,format="f")
temp1.melt <- melt(temp1,id.vars="var_a")
temp2.melt <- melt(temp2,id.vars="var_a")
temp.output <- merge(temp1.melt,temp2.melt,by=c("var_a","var_b"))
temp.output[,"value"] <- paste(temp.output[,"value.x"]," (",temp.output[,"value.y"],"%)",sep="")
temp.output[,"var_a"] <- factor(temp.output[,"var_a"],levels=c("a","b","c","d","e","Sum"))
temp.output <- dcast(temp.output,formula=var_a~var_b,value.var="value")
我的一个办公室平时工作是创建的表格,列出不同的变量之间的频率,通常我会包括表中的百分比(行/列百分比)也是如此。
之前,我知道函数addmargins
,prop.table
和as.data.frame.matrix
,我使用大量melt
和dcast
从reshape2
包这样的伎俩(即将表格转换为数据帧,melt
它,做相应的部门给予的百分比,然后它)。现在我知道使用三种新的学习功能可以为我节省很多代码。
现在我想知道这是否可以提前一步,而不使用我上面提供的脚本,并创建一个行/列的百分比表旁边的实际计数的表?
啊,它是接近的,但是您的表列数减去了一倍 – lokheart
不确定你的意思。你是指第一列不是组标签的事实吗?如果是这样,就处理好了。 –
@DWin可能会建议用矩阵(seq(1,ncol(temp1)* 2),ncol(temp1),2)'替换矩阵(1:10,5,2)'...... – agstudy