相关疑难解决方法(0)

在R中动态地子集测量设计对象

我试图弄清楚如何动态地对调查设计对象进行子集化.我已经构造了我的循环来发送字符串,并且不知道如何删除引号,因此R将其作为调用读取.

我想循环一些这样的(虽然这显然会破坏,因为%4中的SUBSET_VARIABLE%需要是一个调用而不是一个字符串.:

design <- svydesign( ~1 , weight = ~wt , data = mtcars ) 

for( SUBSET_VARIABLE in c("gear","carb") ){

    design <- subset( design ,  SUBSET_VARIABLE %in% 4 )

    a <- svymean(~mpg, design)

}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想避免在粘贴函数中定义语句而不是使用eval( parse ( text = statement ) ) )它来执行它.此外,我想避免使用索引,因为我知道survey.design对象的子集方法执行其他任务(请参阅getS3method("subset", "survey.design"):),并希望确保动态运行子集完全等同于使用循环中的子集函数.感谢您的任何帮助,您可以提供

马修

r survey subset

2
推荐指数
1
解决办法
879
查看次数

R 在调查包中循环

我在使用调查包循环变量时遇到问题。假设我将变量子集与调查权重一起收集到数据框中,并且我想进行卡方检验。考虑到多次测试的问题,我仍然想测试所有独特的组合。这在 R 中通常相对简单,这里有一个很好的例子。

不幸的是,这在调查包中变得更加困难,因为项目需要位于设计对象中,而且最重要的是不支持数据集索引(至少据我所知)。我尝试将上面提到的示例改编为 svychisq,但我的所有策略都失败了。

我注意到有人在这里做了类似的事情,但大多数变量都是固定的。任何人都可以创建一个函数(可能类似于这个答案)但使用 svychisq 函数吗?不幸的是,我不知道在线提供的具有大量分类变量和复杂设计的数据集。出于演示目的,我想可以在 data(api) 中使用 dclus1,如函数帮助文件中所示,并尝试循环前 10 个变量

library(survey)
data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
svychisq(~sch.wide+stype, dclus1)
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

更新:我真正想做的是避免指定变量名称并给出变量组合的向量。例如

MyChi2tests <- apply( combn(colnames(apiclus1[,c(2,16:17)]),2), 2, function(z) paste(z, collapse = '+')) 
Run Code Online (Sandbox Code Playgroud)

r survey

1
推荐指数
1
解决办法
2028
查看次数

标签 统计

r ×2

survey ×2

subset ×1