gpt4 book ai didi

r - 对多个值选择的行进行子集化

转载 作者:行者123 更新时间:2023-12-02 04:39:23 24 4
gpt4 key购买 nike

我有一个数据框“H”,其中包含列“HHID”、“Village”和结果“O”

Village 有 5 个因素,A、B、C、D、E。但是,其中一个因素仍未使用。例如,从 A 招募了 14 名参与者,从 B 招募了 20 名参与者,从 C 招募了 25 名参与者,从 D 招募了 15 名参与者,但是来自 E 的无(0)。在数据输入期间,此因素 E 未被删除并在分析期间持续存在,因为数据输入是在 SPSS 中完成的,并使用外部包导入到 R。

在我收到以下错误时运行 GEE 模型(来自 geepack)之前一直很好。

fit <- I(O == 1) ~ Village
fit1.1 <- geeglm(fit, family = binomial, id=HHID, data=H)

Factors not allowed to have unused levels...

我尝试制作数据子集并运行模型,但仍然出现相同的错误。

sub <- H[H$Village %in% c("A", "B","C","D"), ]

以防万一我没有运行错误的模型,这就是我一直在使用的模型

fit <- I(O == 1) ~ Village
fit1.1 <- geeglm(fit, family = binomial, id=HHID, data=sub)

我不知道如何摆脱这个错误。这基本上是制作子集的错误吗。

感谢您的帮助。

最佳答案

你可以使用 ?droplevels删除未使用的级别,例如:

f <- factor(LETTERS[1:4], levels=LETTERS[1:5])
f
#[1] A B C D
#Levels: A B C D E
droplevels(f)
#[1] A B C D
#Levels: A B C D

在你的例子中,一个简单的 sub <- droplevels(sub)应该可以。

关于r - 对多个值选择的行进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com