我有一系列使用R中的"表"软件包创建的表格,以允许多个变量,例如
##create sample data frame
x<-runif(1000, 0, 1)
x<-round(x,0)
y<-runif(1000, 0, 1)
y<-round(y,0)
z<-runif(1000, 1, 6)
z<-round(z, 0)
data<-as.data.frame(cbind(x,y,z))
names(data)<-c("Q1_1", "gender", "agegrp")
data$Q1_1<-as.factor(data$Q1_1)
data$weights<-runif(1000, 0, 0.5)
##create table
tabular((Q1_1+1)~((factor(agegrp)+factor(gender))*Percent("row")), data=data)
这可以正常工作(并允许添加更多的变量,我需要(,但是我想使用加权数据产生相同的表。"调查"软件包为我提供了可观的选项,但这仅限于产生两个变量的crosstables,而不是针对其他一系列变量越过1个或更多变量。在表格中,我可以产生加权均值,但无法看到加权百分比。一种替代方法是创建几个加权表,我可以在其中创建一个变量列表以与另一个绑定,然后绑定它们,但这似乎有点降低?
有人知道使用表格命令创建此类表的方法,还是我最好找到另一种方法来创建可以更好地适合加权的表?
Percent
的默认结果是 function(x, y) 100*length(x)/length(y)
,其中 x
是当前单元格中的值,而 y
是参考单元格中的值,即示例表中的整个行。
要获得加权百分比,您希望该功能使用权重的总和而不是向量的长度,例如包装中的?Percent
中的讨论。这很容易,只需使用
tabular((Q1_1 + 1) ~ ((factor(agegrp) + factor(gender)) *
Percent("row",
fn = function(x, y) 100*sum(x)/sum(y)) *
weights),
data = data)