1

我正在尝试在 sparklyr 中使用 rowSum 来创建一个指标变量,其中所有变量都丢失了,但似乎 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() 函数中编写多个变量吗?

4

1 回答 1

2
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))
    
于 2018-11-14T23:14:23.563 回答