gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:36:42 25 4
gpt4 key购买 nike

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

村庄有 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/

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