RStudio(或 R)中是否有像 SPSS 中那样的变量列表?

Is there a variable listing in RStudio (or R) like in SPSS?

RStudio 提供了一个很好的函数 View(大写 V)来查看数据,但使用 R 在大型数据集中获取方向仍然很麻烦。最常见的选项是...

如果您来自 SPSS,R 似乎在这方面降级了。我想知道是否有更人性化的选择?我没有找到现成的,所以我想和你分享我的解决方案。

使用 RStudio 的内置函数 View,很容易为 data.frame 提供类似于 SPSS 中的变量列表。此函数使用变量信息创建一个新的 data.frame 并通过 View.

在 RStudio GUI 中显示
# 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() 可能是控制台的更好选择。