R версия 3.6.3 (29.02.2020) | Использование пакета dplyr_1.0.0 | Невозможно выполнить функцию summarize () - PullRequest
1 голос
/ 17 июня 2020

Пытаюсь выполнить базовую c Summarize (), но снова и снова получаю одну и ту же ошибку!

У меня есть большое количество файлов CSV с 4 столбцами. Я читаю их в R, используя lapply и rbinding. Затем мне нужно увидеть количество полных наблюдений, представленных для каждого идентификатора.

Ошибка:

 *Problem with `summarise()` input `complete_cases`.
    x unused argument (Date)
    i Input `complete_cases` is `n(Date)`.
    i The error occured in group 1: ID = 1.*

Код:

library(dplyr)
merged <-do.call(rbind,lapply(list.files(),read.csv))
merged <- as.data.frame(merged)
remove_na <- merged[complete.cases(merged),]
new_data <- remove_na %>% group_by(ID) %>% summarise(complete_cases = n(Date))

Вот что данные выглядят как

1 Ответ

1 голос
/ 17 июня 2020

Проблема исходит не из summarise, а из n.

Если вы посмотрите справку ?n, вы увидите, что n используется без аргументов, например:

new_data_count <- remove_na %>% group_by(ID) %>% summarise(complete_cases = n())

Это будет подсчитывать количество строк для каждой группы ID и не зависит от столбца Date. Вы также можете использовать функцию быстрого доступа count:

new_data_count <- remove_na %>% count(ID)

Если вы хотите подсчитать разные значения Date, вы можете использовать n_distinct:

new_data_count_dates <- remove_na %>% group_by(ID) %>% summarise(complete_cases = n_distinct(Date))

Следует отметить, что вы могли бы написать свой код с помощью purrr::map, который имеет лучшие функции, чем _apply, поскольку вы можете указать тип возвращаемого значения с суффиксом. Это может выглядеть так:

library(purrr)
remove_na = map_dfr(list.files(), read.csv) %>% na.omit()

Здесь map_dfr возвращает data.frame со строками привязки, но вы могли бы использовать map_dfc, который возвращает data.frame с привязанными столбцами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...