在 R 中从多个其他变量中创建一个变量,但一个结果未被识别为因子?

  • 本文关键字:变量 一个 识别 结果 创建 其他 r
  • 更新时间 :
  • 英文 :


我试图创建一个变量的多个其他。因此,我首先为每个不同的变量创建因子变量,如下所示:

usl

usl

然后在这些(和其他多个)中,我想创建一个变量,如下所示:

usl <- mutate(usl, unsafenat = ifelse(unsafenat1_fct == "是mentioned"| unsafenat2_fct == "|unsafenat3_fct == "有提及"| unsafenat4_fct == "|unsafenat5_fct == "有提及"| unsafenat6_fct == "|unsafenat7_fct == "有提及"| unsafenat8_fct == "|unsafenat9_fct == "有提及"| unsafenat10_fct == "|unsafenat11_fct == "有提及"unsafenat12_fct == "有提及"unsafenat97_fct == "被提及"被提及"未被提及"Unsafenat = as.factor(Unsafenat))

基本上我想要的是如果任何初始变量的结果是"Yes mention "那么我希望我的新变量的结果也是&;Yes mention &;但如果不是"是的,提到"那我就不希望它"不被提及"。然而,当我执行这段代码时,它只识别"Yes提到"其他的都被加入了NA组,我不知道为什么。

让我们看看这些变量:

输入图片描述

当我尝试不同的编码时,很明显问题是它不识别"Not mention ",但我不明白为什么。

usl$unsafeethn[usl$ unsafeeth1_fct == "未提及"]<-&quotmentioned&quot;

警告信息:在[<-.factor(*tmp*, usl$ unsafeethn1_fct == "Not;无效因子水平,NA生成

您不需要为每列创建不同的_fct变量。如果在'unsafenat'列中有1/0的值,则可以将它们相加并仅当行中至少有一个1时才分配"Yes mentioned"

library(dplyr)
usl <- usl %>%
mutate(unsafenat = ifelse(rowSums(select(., starts_with('unsafenat')), 
na.rm = TRUE) > 0, "Yes mentioned", "Not mentioned"))

最新更新