【问题标题】:r weighting complex tables - tabularr 加权复杂表 - 表格
【发布时间】:2018-02-23 17:28:56
【问题描述】:

我有一系列使用 R 中的“tables”包创建的表,以允许多个变量,例如

##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)

这很好用(并且允许添加更多我需要的变量),但我想使用加权数据生成相同的表格。 “调查”包为我提供了 svytable 选项,但这仅限于生成两个变量的交叉表,而不是将一个或多个变量与一系列其他变量交叉。在表格中,我可以生成加权平均值,但看不到加权百分比的方法。一种替代方法是创建几个加权表,在其中我可以创建一个变量列表以与另一个变量交叉然后绑定它们,但这似乎效率有点低?

有谁知道使用表格命令创建这样一个表格的方法,还是我最好找到另一种方法来创建更适合加权的表格?

【问题讨论】:

    标签: r weighting


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2010-11-30
      • 1970-01-01
      • 2016-08-17
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 2021-01-21
      相关资源
      最近更新 更多