我正在尝试使用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"))
我收到错误消息:“Summary.factor中的错误(c(3L,1L),na.rm = TRUE): 'sum'对于因素没有意义“
无论我是将“性别”列保留为字符,还是在创建svy1之前将其更改为某个因素,这都会持续存在。
我在RStudio 1.1.442上运行R ver 3.4.4。
任何人都面临这个问题或有解决这个问题的建议?谢谢!
答案 0 :(得分:1)
将变量“ weights”重命名为其他名称(例如“ ps_Weights”),它将运行。
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)
答案 1 :(得分:0)
如果从您提供给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)
根据我对tableone
包的理解,您必须分别检查您的分类和定量变量。如果您想按性别进行拆分,请将其添加为strata
:
> t1 <- svyCreateTableOne(data = svy, vars=c("age", "weights"), strata=c("gender"))
> t1
Stratified by gender
Female Male p test
n 4.00 5.60
age (mean (sd)) 68.75 (20.21) 47.93 (15.99) 0.205
weights (mean (sd)) 2.50 (1.22) 2.07 (0.61) 0.552