首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R加权复杂表格-表格

R加权复杂表格-表格
EN

Stack Overflow用户
提问于 2018-02-24 01:28:56
回答 1查看 190关注 0票数 0

我使用R中的" tables“包创建了一系列表,以支持多个变量,例如

代码语言:javascript
复制
##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)

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

有没有人知道用表格命令创建这样一个表格的方法,或者我是不是更好地找到另一种方法来创建更适合权重的表格?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-17 00:13:28

Percent的默认结果是function(x, y) 100*length(x)/length(y),其中x是当前单元格中的值,y是引用单元格中的值,即示例表中的整行。

要获得加权百分比,您可能希望函数使用权重之和,而不是向量的长度,就像在包中的?Percent中所讨论的那样。这很简单,只需使用

代码语言:javascript
复制
tabular((Q1_1 + 1) ~ ((factor(agegrp) + factor(gender)) *
                      Percent("row", 
                        fn = function(x, y) 100*sum(x)/sum(y)) *
                      weights), 
        data = data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48953274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档