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

Bur*_*Leo 4 r spss rstudio

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

  • names(df)
  • str(df)

如果您来自 SPSS,那么 R 在这方面似乎是降级的。我想知道是否有更方便用户的选择?我没有找到现成的解决方案,所以我想与您分享我的解决方案。

Bur*_*Leo 5

使用 RStudio 的内置函数View,可以非常简单地获得类似于data.frameSPSS 中的变量列表。此函数使用data.frame变量信息创建一个新变量,并通过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)
}
Run Code Online (Sandbox Code Playgroud)

我的建议是将其存储为文件(例如,Varlist.R),无论您需要什么,只需键入:

source("Varlist.R")
Varlist(df)
Run Code Online (Sandbox Code Playgroud)

再次请注意V用作函数名称的大写字母。

限制:使用 时,除非再次运行data.frame,否则列表不会更新。Varlist(df)

注意: R 有一个内置选项可以使用 来查看数据print。如果使用纯 R,只需将 替换View(varlist)print(varlist)。然而,根据屏幕尺寸,Hmisc::describe()对于控制台来说可能是更好的选择。