#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()
это может быть лучшим вариантом для консоли.