在sdf_pivot中引用函数。

问题描述 投票:0回答:1

所有的人。

我在引用sdf_pivot的简单函数时遇到了问题。有谁能帮助我吗?谢谢!这就是我的代码。

这是能用的代码,但不是我需要的。

spark_disconnect_all();
sc <- spark_connect(master = "yarn-client")
mtcars_tbl <- sdf_copy_to(sc, mtcars, name = "mtcars_tbl", overwrite = TRUE)
mtcars_tbl %>%
  mutate(mpg = ifelse(mpg > 30, "High", "Low" )) %>%
  sdf_pivot(mpg+cyl ~ gear, fun.aggregate = list(hp = "mean")) 

我想在计算平均数的时候去掉NA,同时计算中位数,最好也去掉NA。但我不能让下面的代码工作。

mtcars_tbl %>%
  mutate(mpg = ifelse(mpg > 30, "High", "Low" )) %>% 
  sdf_pivot(mpg+cyl ~ gear, fun.aggregate = list(hp = "mean(na.rm=TRUE)")) 
mtcars_tbl %>%
  mutate(mpg = ifelse(mpg > 30, "High", "Low" )) %>%
  sdf_pivot(mpg+cyl ~ gear, fun.aggregate = list(hp = "percentile(0.5)")) 

这是我需要的结果

  mpg     cyl `3.0` `4.0` `5.0`
  <chr> <dbl> <dbl> <dbl> <dbl>
1 Low       8  194.  NaN   300.
2 High      4  NaN    61   113 
3 Low       4   97    85    91 
4 Low       6  108.  116.  175 

我的数据有8亿行,我在这里只是用一个例子,方便复制。现实中,我不可能只把它收集到R中的一个数据框中,所有的计算都要在spark上进行。很多东西在Spark上停止工作,中位数函数就是其中之一。我可以让百分位数函数工作,但不能让中位数工作。但我不知道如何在这个特定的设置中提供额外的参数。

r sparklyr
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.