【问题标题】:if function to create a new variable from three dummies in Rif函数从R中的三个假人创建一个新变量
【发布时间】:2019-01-14 15:57:26
【问题描述】:

我需要 R 使用我数据集中的三个虚拟变量创建一个新的分类变量。我正在尝试使用“if”和“else if”。我已经设法在其他软件中做到了,但我在 R 中找不到解决方案。有人请看一下我的代码并告诉我出了什么问题吗?

    data$newvariable<- if(data$dummyA[1]) {
   (data$newvariable<-"1")
    } else if(data$dummyB[1]){
    (data$newvariable<-"2")
    } else if(data$dummyC[1]){
    (data$newvariable<-"3") }

我希望不要重复问题。对不起!并提前感谢您!

我得到的结果是所有被归类为“1”的案例,这让我觉得第一个 if 语句和下一个 if 语句之间缺少一些东西。但我找不到解决方案,请帮忙!

谢谢!

【问题讨论】:

  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。这样可以更轻松地为您提供帮助。
  • if 检查单个条件 - 可能您想使用矢量化版本 ifelse,类似于 data$newvar = with(data, ifelse(dummyA, 1 ifelse(dummyB, 2, 3)))。如果您使用的是dplyr,也可以尝试dplyr::case_when
  • 等待确认,但建议欺骗:vectorized if statement in R.
  • 它与 ifelse 一起工作!这就是我要找的东西 =)

标签: r if-statement dummy-variable


【解决方案1】:

您可以使用 ifelse() 来完成这项工作。

 data$newvariable <- ifelse(data$dummyA[1], "1", 
                             ifelse(data$dummyB[1], "2",
                                    ifelse(data$dummyC[1], "3")))

这应该可行,但如果没有可重现的示例,则无法对其进行测试。

【讨论】:

  • 谢谢!正如我在其他 cmets 中所说,它有效。再次感谢
猜你喜欢
  • 1970-01-01
  • 2018-05-29
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 2016-05-10
  • 2021-09-22
相关资源
最近更新 更多