R Tableone无法处理来自调查svydesign对象的因素

R Tableone无法处理来自调查svydesign对象的因素,r,survey,R,Survey,我正在尝试使用tableone包生成tableone摘要,其中数据输入是使用调查包生成的调查设计对象。根据tableone文档,这应该是可能的,事实上,它适用于我同事的工作空间。表一能够处理连续变量,但不能处理因子。下面是一个可复制的示例 library(survey, tableone) age<- c(55,66,77,33,44) gender<-c("Male","Male","Female","Male","Female") weights<-c(2.3,1.0,3.

我正在尝试使用tableone包生成tableone摘要,其中数据输入是使用调查包生成的调查设计对象。根据tableone文档,这应该是可能的,事实上,它适用于我同事的工作空间。表一能够处理连续变量,但不能处理因子。下面是一个可复制的示例

library(survey, tableone)
age<- c(55,66,77,33,44)
gender<-c("Male","Male","Female","Male","Female")
weights<-c(2.3,1.0,3.0,2.3,1.0)

df<- data.frame(age,gender,weights)
svy <- svydesign(id = ~0, data = df, weights=~weights)
t1 <- svyCreateTableOne(data = svy, vars=c("age", "gender")) 
库(调查,表一)

年龄如果您将分类变量从提供给
svyCreateTableOne的变量列表中删除,它将起作用:

> t1 <- svyCreateTableOne(data = svy, vars=c("age", "weights")) 
> t1

                      Overall      
  n                    9.60        
  age (mean (sd))     56.60 (19.03)
  weights (mean (sd))  2.25 (0.79) 
将变量“权重”重命名为其他变量(例如“ps_权重”),它将运行

library(survey)
library(tableone)
age<- c(55,66,77,33,44)
gender<-c("Male","Male","Female","Male","Female")
ps_weights<-c(2.3,1.0,3.0,2.3,1.0)

df<- data.frame(age,gender,ps_weights)
svy <- svydesign(id = ~0, data = df, weights=~ps_weights)
t1 <- svyCreateTableOne(data = svy, vars=c("age", "gender"))
print(t1)

                Overall      
n 9.60
age (mean (sd)) 56.60 (19.03)
gender = Male (%) 5.6 (58.3)
图书馆(调查)
图书馆(表一)

AGE在
t1中,问题必须在
svy
对象中
CreateTableOne(vars=c(“age”,“gender”),data=df)
可以处理分类变量和定量变量。这真的很奇怪,因为如果我使用svytable函数,它可以很好地工作,这向我暗示svy对象是正常的,并且理解gender是一个分类变量:
svytable(~gender,svy)
我同意第一部分-tableone与连续变量完美配合。关于第二部分,我在使用上面引用的代码时仍然会遇到同样的错误,按性别分层。顺便说一句,我认为我仍然应该能够在tableone中使用分类变量并报告加权频率。事实上,子集函数svycreatecatable就应该这样做,但对我来说也不起作用。是的,我只是查看了代码,它看起来确实像
svyCreateTableOne
应该分别构造分类和定量的值,然后合并成
TableOne
对象。。。而这并不是为了你的数据。你试过联系软件包作者吗?可能有个bug。
library(survey)
library(tableone)
age<- c(55,66,77,33,44)
gender<-c("Male","Male","Female","Male","Female")
ps_weights<-c(2.3,1.0,3.0,2.3,1.0)

df<- data.frame(age,gender,ps_weights)
svy <- svydesign(id = ~0, data = df, weights=~ps_weights)
t1 <- svyCreateTableOne(data = svy, vars=c("age", "gender"))
print(t1)

                Overall      
n 9.60
age (mean (sd)) 56.60 (19.03)
gender = Male (%) 5.6 (58.3)