R Tableone无法处理来自调查svydesign对象的因素
我正在尝试使用tableone包生成tableone摘要,其中数据输入是使用调查包生成的调查设计对象。根据tableone文档,这应该是可能的,事实上,它适用于我同事的工作空间。表一能够处理连续变量,但不能处理因子。下面是一个可复制的示例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.
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)