2017-10-12 4 views
0

Comment effectuer la tâche suivante pour une trame de données d'étincelles. En dplyr, je ferais ceci:sparkR - valeurs de sous-ensemble dans la liste

library(dplyr) 
df1 <- data.frame(x = 1:10, y = 101:110) 
df2 <- data.frame(r = 5:10, s = 205:210) 
df3 <- df1 %>% filter(x %in% df2$r) 

Comment puis-je effectuer la commande filtre (x% en% DF2 de $ r) pour une dataframe sparkR?

Répondre

1

Je viens d'avoir la même question et cela semble fonctionner pour filtrer une liste:

df3 <- filter(df1, ("x in ('string1','string2','string3')")) 

dans votre cas, vous voudrez peut-être envisager une jointure

df3 <- drop(join(df1, SparkR::distinct(SparkR::select(df2,'r')), df1$x==df2$r),'r') 

(probablement un peu trop cher cependant) ..

acclamations, anna

+0

Le problème est que je ne peux pas énumérer tous les x dans ('string1', 'string2', ...), Il y a 1000 telles 'chaînes' – user124543131234523

1

Ou ne convertit pas la recherche à SparkDataFrame:

> df1 <- createDataFrame(data.frame(x = 1:10, y = 101:110)) 
> df2 <- data.frame(r = 5:10, s = 205:210) 
> filter(df1, df1$x %in% df2$r) 
SparkDataFrame[x:int, y:int] 

ou convertir les deux et join:

> df1 <- createDataFrame(data.frame(x = 1:10, y = 101:110)) 
> df2 <- createDataFrame(data.frame(r = 5:10, s = 205:210)) 
> join(df1, df2, df1$x == df2$r, "leftsemi") 
SparkDataFrame[x:int, y:int] 

Et ne pas utiliser dplyr avec SparkR. Pour l'API compatible dplyr, utilisez sparklyr.