我有一个spark数据帧,其中列A、B、C、D都是双精度类型的。我需要添加一个新的列'ratio‘,它的计算方法如下:
if(A IS NULL && B IS NULL)
then 0
if(A IS NOT NULL && B IS NULL)
then A/D
if(A IS NULL && B IS NOT NULL)
then C/B
if(A IS NOT NULL && B IS NOT NULL)
then A/B
在scala中如何做到这一点,因为双精度不能与NULL进行比较?
也许有人能帮我解释一下为什么这样的情况不能解决。比如说,我们有两组数据,数据A(人)和数据B(车辆,分解成卡车和汽车)。每一行都是部门,人们可以使用同一部门的车辆。
所以我们看看卡车和汽车的比率(我们找出了卡车的百分比),然后根据这个比率,我们对我们假设有多少人会有卡车,给他们的部门一个非常愚蠢的估计。
+--------+--------+--------+--------+--------+---------------+-------+
| | DATA A | DATA B | | |
|
我想用正确的设置来绘制数据集并获得所需的输出。
根据0-1的比例(0=light红色,1=dark红色)绘制散射点,使点呈阴影红色,从浅红色到暗红色。
显示图例,也显示比例尺的红色,根据比例0-1 (点1)。
数据解释:
地区-城市(捷径)
id -用户id
变变量
时间-日期
出口-消费者左转
比率-比例(0-1之间)
数据样本和图解(显然不正确):
data data;
input area $ id $ var $ time $ exit $ ratio $;
datalines;
A 1 1 1 0 0.18
A 1 1 2 0 0.11
A 2 1 1 1 0.14