Мне интересно получить кросс-закладку отсутствующих значений во всех столбцах в фрейме данных SparkR. Данные, которые я пытаюсь использовать может быть сгенерирован с использованием кода ниже:Перекрестное табулирование отсутствующих значений в кадре данных SparkR во всех столбцах
данныхset.seed(2)
# Create basic matrix
M <- matrix(
nrow = 100,
ncol = 100,
data = base::sample(x = letters, size = 1e4, replace = TRUE)
)
## Force missing vales
M[base::sample(1:nrow(M), 10),
base::sample(1:ncol(M), 10)] <- NA
table(is.na(M))
SparkR
После, this answer я хотел бы, чтобы прийти к искомому решению с использованием flatMap
. Идея состоит в том, чтобы заменить отсутствующие/отсутствующие значения на T/F
и затем подсчитать вхождения для каждой переменной. Сначала это не кажется, что flatMap
был не экспортируемые SparkR 2.1, так что я должен был вырыть его с :::
# Import data to SparkR ---------------------------------------------------
# Feed data into SparkR
dtaSprkM <- createDataFrame(sqc, as.data.frame(M))
## Preview
describe(dtaSprkM)
# Missing values count ----------------------------------------------------
# Function to convert missing to T/F
convMiss <- function(x) {
ifelse(test = isNull(x),
yes = FALSE,
no = TRUE)
}
# Apply
dtaSprkMTF <- SparkR:::flatMap(dtaSprkM, isNull)
## Derive data frame
dtaSprkMTFres <- createDataFrame(sqc, dtaSprkMTF)
Во-вторых, после выполнения кода выдает следующее сообщение об ошибке:
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘isNull’ for signature ‘"list"’
Желаемая Результаты
На обычной рамке данных в R желаемые результаты могут быть достигнуты следующим образом:
sapply(as.data.frame(M), function(x) {
prop.table(table(is.na(x)))
})
Мне нравится гибкость, table
и prop.table
предложение и в идеале я хотел бы быть в состоянии прийти к подобной гибкости через SparkR.