Есть ли список переменных в RStudio (или R), как в SPSS?

#r #rstudio #spss

#r #rstudio #spss

Вопрос:

RStudio предоставляет приятную функцию View (с прописными V буквами) для просмотра данных, но с R все равно неприятно ориентироваться в большом наборе данных. Наиболее распространенными вариантами являются…

  • names(df)
  • str(df)

Если вы переходите из SPSS, R кажется понижением в этом отношении. Я задавался вопросом, есть ли более удобный вариант? Я не нашел готового, поэтому я хотел бы поделиться с вами своим решением.

Комментарии:

1. Также tibble::glimpse есть .

2. Я этого еще не знал. Спасибо! Это немного похоже на сжатую версию str , но не показывает комментарии (в SPSS это будет «Метки переменных»), не так ли?

3. Я так не думаю, но это может быть связано с тем, что комментарии не используются большинством людей (насколько я знаю). На самом деле я никогда не слышал об этой функции в R!

4. О, comment() это невероятно полезно. Особенно, если несколько человек работают с одними и теми же данными. Вероятно, это вопрос индивидуального R-стиля 🙂

5. возможно, вам будет интересно посмотреть describe , label , units из Hmisc пакета…

Ответ №1:

Используя встроенную функцию RStudio View , очень просто создать список переменных data.frame , аналогичный списку в SPSS. Эта функция создает новую data.frame с информацией о переменной и отображает в графическом интерфейсе RStudio через View .

 # Better variables view
Varlist = function(sia) {
  # Init varlist output
  varlist = data.frame(row.names = names(sia))
  varlist[["comment"]] = NA
  varlist[["type"]] = NA
  varlist[["values"]] = NA
  varlist[["NAs"]] = NA
  # Fill with meta information
  for (var in names(sia)) {
    if (!is.null(comment(sia[[var]]))) {
        varlist[[var, "comment"]] = comment(sia[[var]])
    }
    varlist[[var, "NAs"]] = sum(is.na(sia[[var]]))
    if (is.factor(sia[[var]])) {
      varlist[[var, "type"]] = "factor"
      varlist[[var, "values"]] = paste(levels(sia[[var]]), collapse=", ")
    } else if (is.character(sia[[var]])) {
      varlist[[var, "type"]] = "character"
    } else if (is.logical(sia[[var]])) {
      varlist[[var, "type"]] = "logical"
      n = sum(!is.na(sia[[var]]))
      if (n > 0) {
        varlist[[var, "values"]] = paste(round(sum(sia[[var]], na.rm=T) / n * 100), "% TRUE", sep="")
      }
    } else if (is.numeric(sia[[var]])) {
      varlist[[var, "type"]] = typeof(sia[[var]])
      n = sum(!is.na(sia[[var]]))
      if (n > 0) {
        varlist[[var, "values"]] = paste(min(sia[[var]], na.rm=T), "...", max(sia[[var]], na.rm=T))
      }
    } else {
      varlist[[var, "type"]] = typeof(sia[[var]])
    }
  }
  View(varlist)
}
 

Я рекомендую сохранить это в виде файла (например, Varlist.R ) и всякий раз, когда вам это нужно, просто введите:

 source("Varlist.R")
Varlist(df)
 

Еще раз, пожалуйста, обратите внимание на верхний регистр V , используемый в качестве имени функции.

Ограничение: при работе с data.frame список не будет обновляться, если Varlist(df) не будет запущен снова.

Примечание: R имеет встроенную опцию для просмотра данных print . При работе с чистым R просто замените View(varlist) на print(varlist) . Тем не менее, в зависимости от размера экрана, Hmisc::describe() это может быть лучшим вариантом для консоли.