【发布时间】:2014-02-05 23:23:02
【问题描述】:
我正在努力在 R 中编写 if then 语句。我有一个名为 diel 的变量,我希望这个变量术语是“白天”或“夜晚”,基于名为 @ 的变量的值987654322@。我先在 SAS 中编写代码,它看起来像这样:
length diel $5;
if 7 <= hour < 17 then diel = 'day';
if 19 <= hour <= 24 then diel = 'night';
if 0 <= hour < 5 then diel = 'night';
run;
如您所见,黄昏 (17-19) 和黎明 (5-7) 的时间被忽略了。这确实是我在 R 中遇到的问题,我不知道如何忽略黄昏和黎明。当我写的时候:
dat4$diel <- ifelse ((dat4$hour)< 17, ifelse((dat4$hour) <=7,"day","night"),"night")
它将白天的正确时间标记为正确的时间,但将其他所有时间标记为夜晚。当我尝试任何其他组合时,例如添加另一个 ifelse 语句,如果覆盖第一个语句并将所有时间标记为一天。感谢您的任何建议!
【问题讨论】:
-
看起来你重复了两次 SAS 代码。我保留了它,因为我不确定你应该删除它。
-
我有点困惑。您的数据集中是否没有任何黄昏或黎明数据,即
hour的值永远不会介于 5 和 7 之间,也不会介于 17 和 19 之间?如果您确实有黄昏/黎明数据,您希望它如何标记? -
为什么要使用单行而不是创建一个简单易读的函数?
标签: r variables if-statement conditional