r语言 - Databricks 上的 Sparklyr语言 - 取具有许多 NaN 值的 Sparklyr 数据框上多列行的平



我正在尝试为闪闪发光的数据帧创建最小、最大和平均列。我只想在计算中按行使用该大型数据帧中的 5 列。列中有许多 NaN 值,这些值可能是在计算东西。在标准中,使用的代码将是:

df_train$MinEncoding <- spark_apply(df_train,f=min ,columns=[,EncodingFeatures], 1, FUN=min,na.rm=TRUE)
df_train$MaxEncoding <- spark_apply(df_train[,EncodingFeatures], 1, FUN=max,na.rm=TRUE)
df_train$MeanEncoding <- spark_apply(df_train[,EncodingFeatures], 1, FUN=mean,na.rm=TRUE)

我试过了

df_train %>% spark_apply(function(df) {dplyr::mutate(df, MeanLicenceEncoding = mean(LicenceEncodingFeatures))})

然而,火花中止了这项工作。有人可以帮忙吗?

对于变量列,您可以将 Hare 的greatest()least()dplyr一起使用,并按如下所示sparklyr

library(sparklyr)
library(dplyr)
sc <- spark_connect(master = "local")
iris <- copy_to(sc, iris)
columns <- c("Sepal_Length", "Sepal_Width")
transmute(iris,
max = greatest(!!! rlang::parse_exprs(columns)),
min = least(!!! rlang::parse_exprs(columns)),
avg = sql(!! paste(paste("if(isnull(", columns, "), 0, ", columns, ")", collapse = " + "))) / !!length(columns))
# Source: spark<?> [?? x 3]
max   min   avg
<dbl> <dbl> <dbl>
1   5.1   3.5  6.85
2   4.9   3    6.4 
3   4.7   3.2  6.3 
4   4.6   3.1  6.15
5   5     3.6  6.8 
6   5.4   3.9  7.35
7   4.6   3.4  6.3 
8   5     3.4  6.7 
9   4.4   2.9  5.85
10   4.9   3.1  6.45
# … with more rows

最新更新