【问题标题】:Create one variable out of multiple others in R, but one outcome isn't recognized as a factor?在 R 中从多个其他变量中创建一个变量,但一个结果不被视为一个因素?
【发布时间】:2021-08-05 19:04:11
【问题描述】:

我正在尝试从多个变量中创建一个变量。所以我首先为每个不同的变量创建了因子变量,如下所示:

usl

usl

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

usl

基本上我希望如果任何初始变量中的结果是“是提及”,那么我希望我的新变量中的结果也是“是提及”,但如果不是“是提及”他们然后我希望它是“未提及”。但是,当我执行此代码时,它只识别“提到是”,而所有其他代码都添加到 NA 组中,我不知道为什么。

下面是变量:

enter image description here

当我尝试不同的编码时,很明显问题在于它没有将“未提及”识别为一个因素,但我不明白为什么。

usl$unsafeethn[usl$unsafeethn1_fct == "未提及"]

警告信息:在[<-.factor(*tmp*, usl$unsafeethnn1_fct == "不是 提到", : 无效因子水平,NA 生成

【问题讨论】:

  • 请您发布一个带有示例数据的可重现示例(例如,使用dput(your_data_frame)
  • 可能的问题是因子具有级别和标签,在您创建它们时没有完全指定它们。当您将变量定义为因子时,预先指定不同的标签可能很有用,以便稍后识别其他标签。
  • 显然,您也可以避免将因子一起使用。
  • 您好,很抱歉我不知道如何使用 dput。当我检查级别时,似乎都指定了两者,因为它识别“未提及”和“是提及”,所以我不确定该怎么做。那我怎么能在不使用因子的情况下做到这一点呢?
  • 您可以通过在控制台中输入dput(usl) 来使用dput,并将输出添加到您的帖子中。

标签: r


【解决方案1】:

您无需为每列创建不同的_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"))

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多