下面是我尝试使用SQL中的CASE WHEN语句重新创建的R脚本:
dat[ ,X_1_7_Spline := pmax(1,pmin(ifelse(is.na(X),1,X),7))]
看起来这个命令告诉解析器返回包含条件语句的向量的并行最大值,只要变量X的值介于1和某个值的并行最小值与7之间(只要该值不为空)。然后,它似乎将包含这些值的新列联接回原始数据集我在表示SQL查询中的代码“pmax(1,pmin(ifelse(is.na(X),1,X),7))”部分时遇到了一些麻烦,希望您能告诉我如何有效地完成这一任务。
我现在有一些非常补救的东西,我知道这并不能正确地表达上面的声明:
CASE WHEN MAX(IF(ISNOTNULL(X) AND MIN(X)=1 AND MAX(X)=7) then 1 else X end as X_1_7_Spline
任何想法/反馈将非常感谢,因为我仍在努力理解R脚本。提前感谢对这个问题的任何见解。
1条答案
按热度按时间9jyewag01#
ifelse(is.na(X),1,X)
可以翻译成SQL的COALESCE(X, 1)
;和pmin
和pmax
逻辑可以放置在CASE WHEN
中(如您开始所述)也许是这个?
我们不需要担心
coalesce
对X < 1
或X > 7
的影响,因为null < 1
不会解析为true,所以它不接受这种情况。使用
sqldf
在R中进行演示: