Я использую Sparklyr, у меня есть вектор слов:
word_list <- c("toto", "tata")
, и я хотел бы знать, появляется ли хотя бы одно из них хотя бы раз в одной из трех моих текстовых переменных (text_1,text_2, text_3)
table_1 <- data.table(id = 1:3,
text_1= c("(table 012 APM325)", "(JUI524 toto KIO879)" , "(pink car in the field KJU547 MPO362/JHY879)"),
text_2= c("(chips train)", "(toto)", "(coco loco)"),
text_3= c("(train)", "(125 LMP)", "(yid tata)"))
Пока я использую этот метод цикла:
sdf_table_1 <- copy_to(sc, table_1 , "table_1" , overwrite = TRUE)
sdf_table_2 <- sdf_table_1 %>%
mutate(found_word='0')%>%
mutate(found_word=as.numeric(found_word))
for(k in word_list) {
sdf_table_2 <- sdf_table_2 %>%
mutate(found_word=ifelse(locate(k, text_1)>0 |
locate(k, text_2)>0 |
locate(k, text_3)>0, 1 , found_word))
}
glimpse(sdf_table_2)
id <int> 1, 2, 3
text_1 <chr> "(table 012 APM325)", "(JUI524 toto KIO879)", "(pink car in the field KJU547 MPO362/JHY879)"
text_2 <chr> "(chips train)", "(toto)", "(coco loco)"
text_3 <chr> "(train)", "(125 LMP)", "(yid tata)"
found_word <dbl> 0, 1, 1
Поскольку Spark не очень хорошо обрабатывает циклы, мне было интересно, смогу ли я сделатьТо же самое с другим методом, возможно, с использованием spark_apply?
спасибо за вашу помощь!