Конвертировать столбцы в список информационных фреймов и поддерживать имена - PullRequest
1 голос
/ 30 апреля 2020

У меня есть большое df имен столбцов, содержащих данные ответов на вопросы опроса, и я могу сделать следующее:

  1. Преобразовать каждый столбец в фрейм данных и сохранить в списке x
  2. Создание отдельного списка y, содержащего таблицы каждого кадра данных

Производительность:

df <- structure(list(`A question` = c("3", "4", "1", "3", "4", "3"), 
               `Some other question` = c("4", "4", "1", "3", "0", "3"), 
               `Other kind of question` = c("4", "3", "1", "4", "5", "4"
               )), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
               ))

Код:

x <- lapply(df,as.data.frame)


y <- lapply(1:length(x),
            function(i){
              x[[i]] <- table(as.data.frame(x[[i]]))
            })

У меня вопрос: как мне сохранить имена для каждого df (как видно из x) при вызове lapply для создания y?

1 Ответ

1 голос
/ 30 апреля 2020

Не очень ясно, требуется ли для OP list data.frames / tbl_df из каждого столбца или только вывод table. В первом случае мы можем использовать split.default

lst1 <- split.default(df, seq_along(df))

. Если мы хотим использовать lapply, вместо циклического перемещения по столбцу, либо l oop по индексу столбца, либо по именам.

lapply(names(df), function(nm) df[nm])

Если нам нужен table

lapply(df, table)
#$`A question`

#1 3 4 
#1 3 2 

#$`Some other question`

#0 1 3 4 
#1 1 2 2 

#$`Other kind of question`

#1 3 4 5 
#1 1 3 1 

Или, если его необходимо преобразовать в data.frame, оберните с as.data.frame

lapply(df, function(x) as.data.frame(table(x)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...