gpt4 book ai didi

r - 如果 null 替换为 0,否则同一列中的默认值

转载 作者:行者123 更新时间:2023-12-02 17:30:00 25 4
gpt4 key购买 nike

在 SparkR shell 1.5.0 中,创建了一个示例数据集:

df_test <- createDataFrame(sqlContext, data.frame(mon = c(1,2,3,4,5), year = c(2011,2012,2013,2014,2015)))
df_test1 <- createDataFrame(sqlContext, data.frame(mon1 = c(1,2,3,4,5,6,7,8)))
df_test2 <- join(df_test1, df_test, joinExpr = df_test1$mon1 == df_test$mon, joinType = "left_outer")

数据集:df_test2

+----+----+------+
|mon1| mon| year|
+----+----+------+
| 7.0|null| null|
| 1.0| 1.0|2011.0|
| 6.0|null| null|
| 3.0| 3.0|2013.0|
| 5.0| 5.0|2015.0|
| 8.0|null| null|
| 4.0| 4.0|2014.0|
| 2.0| 2.0|2012.0|
+----+----+------+

问题:如果 null 我如何在 df_test2$year 列中将其替换为 0 或否则使用默认值?

输出应该是这样的,

+----+----+------+
|mon1| mon| year|
+----+----+------+
| 7.0|null| 0 |
| 1.0| 1.0|2011.0|
| 6.0|null| 0 |
| 3.0| 3.0|2013.0|
| 5.0| 5.0|2015.0|
| 8.0|null| 0 |
| 4.0| 4.0|2014.0|
| 2.0| 2.0|2012.0|
+----+----+------+

我用过otherwise/when,但没用

df_test2$year <- otherwise(when(isNull(df_test2$year), 0 ), df_test2$year)

它抛出 ed 错误,

Error in rep(yes, length.out = length(ans)) :
attempt to replicate an object of type 'environment'

最佳答案

我使用原始 SQL case when 表达式来获得答案,

df_test3 <- sql(sqlContext, "select mon1, mon, case when year is null then 0 else year end year FROM temp")

showDF(df_test3)
+----+----+------+
|mon1| mon| year|
+----+----+------+
| 7.0|null| 0.0|
| 1.0| 1.0|2011.0|
| 6.0|null| 0.0|
| 3.0| 3.0|2013.0|
| 5.0| 5.0|2015.0|
| 8.0|null| 0.0|
| 4.0| 4.0|2014.0|
| 2.0| 2.0|2012.0|
+----+----+------+

尽管它给出了答案,但我正在寻找纯 sparkR 代码。

关于r - 如果 null 替换为 0,否则同一列中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34654352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com