Могу ли я использовать семейство apply для получения статистики по каждому столбцу множества фреймов данных? - PullRequest
0 голосов
/ 28 августа 2018

Доброе утро, переполнение стека,

Получение некоторой статистики (что угодно) по столбцам информационного кадра может быть сделано с помощью функции (s)apply. Мне интересно, возможно ли получить такую ​​статистику по каждому столбцу для каждого отдельного кадра данных, используя семейство apply?

Количество пропущенных значений в столбце (1 кадр данных):

dataf <- data.frame(list(a = 1:3, b = c(NA, 3:4)), row.names = c("x","y","z"), stringsAsFactors = FALSE)
sapply(dataf, function(x) {sum(is.na(x))})

Я думал о создании списка фреймов данных, но затем статистические данные объединяются по элементам списка (то есть, фрейм данных), хотя я хочу, чтобы он рассчитывался по столбцам. Есть идеи?

Хорошего дня,

Anthony

1 Ответ

0 голосов
/ 28 августа 2018

Как правило, рекомендуется сохранять свои фреймы данных в списке, если вы хотите делать с ними аналогичные вещи. Для получения дополнительной информации см. Превосходный ответ @gregor в этом вопросе Как мне составить список фреймов данных? .

Комментарий @missuse правильный. Протестировано на вашем примере:

dataf <- data.frame(list(a = 1:3, b = c(NA, 3:4)), row.names = c("x","y","z"), stringsAsFactors = FALSE)
dataf2 <- data.frame(list(a = 1:3, b = c(NA, 3:4)), row.names = c("x","y","z"), stringsAsFactors = FALSE)

li <- list(dataf,dataf2)

lapply(li, function(x) sapply(x, function(y) sum(is.na(y))))
> lapply(li, function(x) sapply(x, function(y) sum(is.na(y))))
[[1]]
a b 
0 1 

[[2]]
a b 
0 1 
...