0

R社区。

我正在尝试删除具有 NA 的行以便我可以对我的数据进行卡方分析。否则,当我选择两个变量来制作数据表时,会有一个标题为“未知”的列,这会干扰我所知道的卡方分析。

这些行对应于数据中的每个患者。mint$bp_type2 和 mint$menopause 是两列。我的想法是用随机数替换 NA;我选择了 20。这样,我就可以删除该列下值为 20 的这些行。

这是代码:

mint <- mint[!(mint$bp_type2 == 20),]
薄荷$更年期[is.na(薄荷$更年期)] <- 20
mint <- mint[!(mint$menopause == 20),]
表(薄荷$bp_type2,薄荷$更年期)
chisq.test(mint$bp_type2,mint$menopause)

这是我的错误信息:

> mint$bp_type2[is.na(mint$bp_type2)] <- 20
Warning message:
In `[<-.factor`(`*tmp*`, is.na(mint$bp_type2), value = c(1L, 4L,  :
  invalid factor level, NA generated

随后,我运行其余的代码,我看到数据集并没有消除这些行,因为生成的数据表仍然有一个标记为“未知”的列。

请让我知道我能做些什么来解决这个问题,这样我就可以在没有“未知”列的情况下进行卡方分析。

谢谢!!

4

2 回答 2

1

错误消息是因为列 'bp_type2' 是 afactor而 '20' 不是levels该列之一。我们可以转换为 acharacter或创建 '20' 作为其中之一levels

levels(mint$bp_type2) <- c(levels(mint$bp_type2), '20')

然后做作业

mint$bp_type2[is.na(mint$bp_type2)] <- '20'

,可以添加更多forcats关卡fct_expand

library(forcats)
mint$bp_type2 <- fct_expand(mint$bp_type2, '20')
于 2020-06-24T21:29:10.743 回答
0

尝试 :

chisq.test(na.omit(df$columnName))

这将在进行卡方检验时省略 NA。

于 2020-06-24T21:36:05.020 回答