Создайте индикаторную переменную в SparklyR, когда все переменные отсутствуют - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь использовать rowSum в sparklyr для создания индикаторной переменной, в которой отсутствуют все переменные, но кажется, что rowSum не работает в sparklyr.

Я должен написать имя всех переменных в функции is.na (), как показано ниже, что невозможно, так как у меня 100 переменных.

y <- c(NA,1,2)
x <- c(NA,NA,3)
z <- c(NA,NA,NA)
dt = data.frame(x,y,z)

sdf_copy_to(sc, dt)

dt %>% 
 mutate(new = ifelse(is.na(x) & is.na(y) & is.na(z), 1,0))

В любом случае можно написать несколько переменных в функции is.na ()?

1 Ответ

0 голосов
/ 15 ноября 2018
library(rlang)
library(glue)
  1. создать строку со всеми интересующими именами переменных.Я призываю их всех для простоты;используйте регулярное выражение (например, grep), в противном случае

    cols_of_interest <- names(dt)
    
    
    test_string <-  glue("ifelse({glue('is.na({cols_of_interest})') %>% 
    glue_collapse(sep = '&')}, yes = 1, no = 0)")
    
  2. разберите строку с rlang

    dt %>% mutate(flag = !!rlang::parse_expr(test_string))
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...