R 以年为单位计算行和
嗨,我有一个以下的火花数据帧。我想跨行求和。我找不到任何等价的行和函数。我尝试了以下查询,但它对列值求和R 以年为单位计算行和,r,apache-spark,dataframe,dplyr,sparklyr,R,Apache Spark,Dataframe,Dplyr,Sparklyr,嗨,我有一个以下的火花数据帧。我想跨行求和。我找不到任何等价的行和函数。我尝试了以下查询,但它对列值求和 trans1M_20 %>% dplyr::select(trans1M_20_clicks) %>% dplyr::select(Small_SubChannel_Clicks_names) %>% dplyr::summarise_each(funs(sum)) 请注意,Alma_1是小的子通道名称 阿拉木图1 <
trans1M_20 %>%
dplyr::select(trans1M_20_clicks) %>%
dplyr::select(Small_SubChannel_Clicks_names) %>%
dplyr::summarise_each(funs(sum))
请注意,Alma_1是小的子通道名称
阿拉木图1
<dbl>
0
0
0
0
0
0
0
0
0
0
有一种方法可以通过使用
DBI
包来执行您想要的操作,该包允许您向Spark表发送SQL查询。它不是一个dplyr
解决方案,但在其他人提供更“dply-ish”的解决方案之前,它可能还是有用的
您必须在查询中手动包含列名。例如,如果您想获得“trans1M_20_clicks”和“Small_SubChannel_clicks_names”列的总和,可以执行以下操作:
resSparkSQL <- DBI::dbSendQuery(sc, "SELECT trans1M_20_clicks + Small_SubChannel_Clicks_names as Total FROM your_table_name_in_spark")
有一种方法可以通过使用
DBI
包来执行您想要的操作,该包允许您向Spark表发送SQL查询。它不是一个dplyr
解决方案,但在其他人提供更“dply-ish”的解决方案之前,它可能还是有用的
您必须在查询中手动包含列名。例如,如果您想获得“trans1M_20_clicks”和“Small_SubChannel_clicks_names”列的总和,可以执行以下操作:
resSparkSQL <- DBI::dbSendQuery(sc, "SELECT trans1M_20_clicks + Small_SubChannel_Clicks_names as Total FROM your_table_name_in_spark")
只要列数较少,就可以生成并计算表达式:
library(dplyr)
library(rlang)
df <- copy_to(sc, data.frame(x=c(1, 3), y=c(2, 4)))
columns_to_sum <- colnames(df)
df %>% transmute(total = !!parse_expr(paste(columns_to_sum, collapse = " + ")))
库(dplyr)
图书馆(rlang)
df只要列数较少,就可以生成并计算表达式:
library(dplyr)
library(rlang)
df <- copy_to(sc, data.frame(x=c(1, 3), y=c(2, 4)))
columns_to_sum <- colnames(df)
df %>% transmute(total = !!parse_expr(paste(columns_to_sum, collapse = " + ")))
库(dplyr)
图书馆(rlang)
df您所说的“小的子频道点击”是什么意思?名称可以包含任意数量的列?当您使用dplyr::select(Small\u SubChannel\u Clicks\u names)
时,您只选择了该列。Small\u SubChannel\u Clicks\u names包含多个列的名称,所以当我在select语句中使用该名称时,我得到了这些列的子集,不想将它们合并到一个列中。无需手动操作-只需粘贴(“选择”,paste(cols,collapse=“+”,“作为您的\u表\u name\u中的总计”)
或glue::glue(“选择{paste(cols,collapse='+')}作为您的\u表\u name\u中的总计”)
其中cols
是名称向量。您所说的“小的子通道\u名称可以包含任意数量的列”是什么意思?当您使用dplyr::select(Small\u SubChannel\u Clicks\u names)
时,您只选择了该列。Small\u SubChannel\u Clicks\u names包含多个列的名称,所以当我在select语句中使用该名称时,我得到了这些列的子集,不想将它们合并到一个列中。无需手动操作-只需粘贴(“选择”,粘贴(cols,collapse=“+”,“作为来自您的\u表\u spark中的名称\u的总计”)
或glue::glue(“选择{paste(cols,collapse='+')}作为来自您的\u表\u spark中的名称\u的总计”)
其中cols
是名称向量。