【问题标题】:Recoding a column in a data.frame conditional on another column以另一列为条件重新编码 data.frame 中的列
【发布时间】:2021-09-28 15:49:46
【问题描述】:

在下面的tutorial 数据框中,我正在尝试根据以下条件重新编码列schgend

在我们有:sex=="girl" & schgend =="girlsch" 或我们有:sex=="boy" & schgend=="boysch" 的行中,schgend 列中的值必须重新编码为"same-sex"。否则,schgend 列中的值应保持不变。

不过,我想知道,为什么我的 ifelse() 呼叫没有产生我想要的结果,有解决办法吗?

library(R2MLwiN)
data("tutorial")

transform(tutorial, schgend_new =ifelse(sex=="girl" & schgend=="girlsch" ||
                        sex=="boy" & schgend=="boysch","same-sex",schgend))

【问题讨论】:

  • 能否请您也添加一个可重现的数据。
  • @Macosso,上面问题中的示例是完全可重现的。

标签: r dataframe dplyr


【解决方案1】:

你可以使用 dplyr 来做到这一点

library(dplyr)


tutorial_recoded <- tutorial %>%
  mutate(schgend_new = ifelse(sex=="girl" & schgend=="girlsch" | 
           sex=="boy" &  schgend=="boysch",
         "same-sex", schgend))

【讨论】:

  • 您的代码产生错误。请您用实际数据检查一下。
  • 如果您分享可能有助于发现错误的可重现数据会很棒
  • 数据完全可重现,什么意思?
【解决方案2】:

试试这个:

tutorial$schgend_new <- ifelse(
    (tutorial$sex=="girl" & tutorial$schgend=="girlsch") |
    (tutorial$sex=="boy" & tutorial$schgend=="boysch"),
    "same-sex",
    tutorial$schgend)

【讨论】:

    猜你喜欢
    • 2018-05-19
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多