2017-11-22 1 views
0

안녕하세요 저는 다음의 스파크 데이터 프레임을 가지고 있습니다. 나는 행을 합하여 합을 원합니다. sparklyr에서 행 합계와 동일한 기능을 찾을 수 없습니다. 다음 쿼리를 시도했지만 열 값을 요약합니다.sparklyr에서 rowSum을 계산하십시오.

trans1M_20 %>% 
     dplyr::select(trans1M_20_clicks) %>% 
     dplyr::select(Small_SubChannel_Clicks_names) %>% 
     dplyr::summarise_each(funs(sum)) 

Alma_1은 Small_Subchannel_Clicks_names입니다.

Alma_1

<dbl> 

0    
0    
0    
0    
0    
0    
0    
0    
0    
0 

나는 하나 개의 단일 컬럼에 여러 열을 집계하는 것을 시도하고 행을 합산하고 있습니다. Small_SubChannel_Clicks_names은 n 개의 열 이름을 포함 할 수 있습니다.

rowSums(trans1M_20[, Small_SubChannel_Clicks_names,drop=F]) – 

답변

1

당신이 당신의 스파크 테이블에 SQL 쿼리를 보낼 수있는 DBI 패키지를 사용을 통해 원하는 것을 할 수있는 방법이 있습니다 : 내가 좋아하는 일을하고 싶습니다. 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") 

결과가 DBISparkResultObject, 당신은 R로 결과 열을 얻을 수 있지만, data.frame A와 :

resSparkSQL <- DBI::dbGetQuery(sc, "SELECT trans1M_20_clicks + Small_SubChannel_Clicks_names as Total FROM your_table_name_in_spark") 
+0

"Small_SubChannel_Clicks_names에는 임의 개수의 열을 포함 할 수 있습니다."라는 것이 무슨 뜻입니까? 'dplyr :: select (Small_SubChannel_Clicks_names)'를 사용하면 그 열만 선택하게됩니다. –

+0

Small_SubChannel_Click_names에는 다중 열의 이름이 포함되어 있으므로 select 문에서이 열을 사용하면 이들 열을 하나의 단일 열로 병합하지 않으려 고합니다. – Mustufain

+0

그래, 내가 대답을 편집했습니다, 나는 이것이 도움이되기를 바랍니다. –

2

만큼 열 수 방금 표현 생성하고 평가할 수있는 낮과 같이

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 = " + "))) 

불행히도 더 많은 수의 열에서는 작동하지 않습니다. 대안은 Efficiently calculate row totals of a wide spark DF을 참조하십시오.

관련 문제