【问题标题】:Code a new variable for a dataset using multiple logical operators in R [closed]使用 R 中的多个逻辑运算符为数据集编写新变量 [关闭]
【发布时间】:2016-11-16 16:34:34
【问题描述】:

我正在尝试将 SAS 脚本转换为 R 来学习 R。下面是 SAS 中的脚本。

if continent=1 and (country=5 or country=10) then rate = 8

这是我对名为 data 的数据框的尝试:

data$rate[(continent==1) & (country==5 | country==10)] <- 8

或者:

data$rate[(continent==1) & country %in% c(5,10)] <-8

很遗憾,尝试无法正确生成结果。结果显示当大洲=1 或国家/地区=5 或国家/地区=10 时的比率为 8。我想我在 R 中组合逻辑运算符是错误的。

谁能帮我解决这个问题?非常感谢!

注意:我在上面使用了 attach(data),因为我懒得再次重写数据。

【问题讨论】:

  • 没有样本数据,难以重现。试试看:data$rate[(data$continent==1 &amp; data$country==5 | data$country==10)] &lt;- 8
  • 我觉得你少了一个逗号data$rate[(continent==1) &amp; (country==5 | country==10),] &lt;- 8
  • attach(data) 总的来说是一个非常糟糕的主意。

标签: r sas logical-operators


【解决方案1】:

看起来您的问题是您没有从数据框data 的数据中调用变量。这可能是您的错误的原因。要解决此问题,请通过以下方式在数据框中指定变量:

data$rate[(data$continent==1 &amp; (data$country==5 | data$country==10))] &lt;- 8

【讨论】:

  • 很抱歉没有提到上面使用了 Attach(data)。
  • 我不会使用attach。如果你只是在整个逻辑语句周围加上括号,如上所示。即data$rate[((continent==1) &amp; (country==5 | country==10))] &lt;- 8
  • 感谢您提供正确的解决方案。我错过了括号!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多