SparkR: как извлечь строки, содержащие нулевые значения в определенном столбце

Отказ от ответственности: у меня практически нет опыта работы со SparkR

Возьмите следующий кадр данных:

ID          Date1       Date2
58844880    04/11/16    NaN
59745846    04/12/16    04/14/16
59743311    04/13/16    NaN
59745848    04/14/16    04/11/16
59598413    NaN         NaN
59745921    04/14/16    04/14/16
59561199    04/15/16    04/15/16
NaN         04/16/16    04/16/16
59561198    NaN         04/17/16

Я хотел бы просто захватить строки, которые имеют NaN в столбце Дата 2.

В R я бы использовал new_DF <- DF[is.na(DF$Var),], но не знаю, что делать в SparkR.


person madsthaks    schedule 24.03.2018    source источник


Ответы (2)


Вот один из вариантов использования sparklyr

library(sparklyr)
library(dplyr)

con <- spark_connect(master = "local")
DF1 = copy_to(con, DF)


DF1 %>%
   mutate_at(vars(matches("Date")), 
          funs(to_date(from_unixtime(unix_timestamp(., "MM/dd/yy"))))) %>%
   filter(is.na(Date2)) %>%
   collect()
# A tibble: 3 x 3
#        ID Date1      Date2     
#     <dbl> <date>     <date>    
#1 58844880 2016-04-10 NA        
#2 59743311 2016-04-12 NA        
#3 59598413 NA         NA      

spark_disconnect(con)

данные

DF <- structure(list(ID = c(58844880, 59745846, 59743311, 59745848, 
 59598413, 59745921, 59561199, NaN, 59561198), Date1 = c("04/11/16", 
 "04/12/16", "04/13/16", "04/14/16", "NaN", "04/14/16", "04/15/16", 
 "04/16/16", "NaN"), Date2 = c("NaN", "04/14/16", "NaN", "04/11/16", 
 "NaN", "04/14/16", "04/15/16", "04/16/16", "04/17/16")), .Names = c("ID", 
 "Date1", "Date2"), class = "data.frame", row.names = c(NA, -9L
 ))
person akrun    schedule 24.03.2018

Можно использовать filter с условием isNullчто-то вроде:

DF2 <- SparkR::filter(DF,  isNull(DF$Date2))
person MKR    schedule 24.03.2018