2

我绝对是个菜鸟,尽管我多年来一直使用 R 来完成各种小任务。

对于我的生活,我无法弄清楚如何将“Desc”函数的结果转化为我可以使用的东西。当我保存 x<-Desc(mydata) 时,class(x) 显示为“Desc”。在 R studio 中,它位于 Values 下并显示“List of 1”。然后,当我单击 x 时,它会在第一行显示“:25 列表”。该对象中有一个数据列表,但我一生都无法弄清楚如何获取其中的任何一个。

显然我对 R 数据结构有一个严重的误解,但我一直在寻找过去 90 分钟无济于事,所以我想我会伸出援手。

简而言之,我只想从多个数据集的 Desc 结果中提取描述性统计数据的某些方面(N、均值、UB、LB、中值),然后构建一个我可以使用的小表。

谢谢您的帮助。

4

1 回答 1

0

假设您有一个数据框x,其中:

x <- data.frame(i=c(1,2,3),j=c(4,5,6))

你可以设置:

desc.x <- Desc(x)

并访问任何给定列上的信息,例如:

desc.x$i
desc.x$i$mead
desc.x$j$sd

以及 Desc 提供的任何其他统计信息。是这里$的关键,它是您访问listDesc 返回的命名字段的方式。

编辑:如果您传递一个列(如提问者所做的那样),或者只是一个向量到Desc,那么您将返回一个 1 项列表。相同的原则适用,但通常的语法不同。现在您将使用:

desc.x <- Desc(df$my.col)
desc.x[[1]]$mean

将来,解决这个问题的方法是查看 RStudio 中的环境窗口并尝试弄清楚如何访问这些字段,检查 github 或其他地方的源代码,或者(最好的首选)使用str(desc.x),给我们:

> str(desc.x)
List of 1
 $ :List of 25
  ..$ xname     : chr "data.frame(i = c(1, 2, 3), j = c(4, 5, 6))$i"
  ..$ label     : NULL
  ..$ class     : chr "numeric"
  ..$ classlabel: chr "numeric"
  ..$ length    : int 3
  ..$ n         : int 3
  ..$ NAs       : int 0
  ..$ main      : chr "data.frame(i = c(1, 2, 3), j = c(4, 5, 6))$i (numeric)"
  ..$ unique    : int 3
  ..$ 0s        : int 0
  ..$ mean      : num 2
  ..$ meanSE    : num 0.577
  ..$ quant     : Named num [1:9] 1 1.1 1.2 1.5 2 2.5 2.8 2.9 3
  .. ..- attr(*, "names")= chr [1:9] "min" ".05" ".10" ".25" ...
  ..$ range     : num 2
  ..$ sd        : num 1
  ..$ vcoef     : num 0.5
  ..$ mad       : num 1.48
  ..$ IQR       : num 1
  ..$ skew      : num 0
  ..$ kurt      : num -2.33
  ..$ small     :'data.frame':  3 obs. of  2 variables:
  .. ..$ val : num [1:3] 1 2 3
  .. ..$ freq: num [1:3] 1 1 1
  ..$ large     :'data.frame':  3 obs. of  2 variables:
  .. ..$ val : num [1:3] 3 2 1
  .. ..$ freq: num [1:3] 1 1 1
  ..$ freq      :Classes ‘Freq’ and 'data.frame':   3 obs. of  5 variables:
  .. ..$ level  : Factor w/ 3 levels "1","2","3": 1 2 3
  .. ..$ freq   : int [1:3] 1 1 1
  .. ..$ perc   : num [1:3] 0.333 0.333 0.333
  .. ..$ cumfreq: int [1:3] 1 2 3
  .. ..$ cumperc: num [1:3] 0.333 0.667 1
  ..$ maxrows   : num 12
  ..$ x         : num [1:3] 1 2 3
 - attr(*, "class")= chr "Desc"

“List of 1”表示您通过 访问它desc.x[[1]],并且在其下方跟随$s。当您看到类似的内容时num[1:3],这意味着它是一个原子向量,因此您可以访问第一个成员,例如var$field$numbers[1]

于 2018-09-26T17:17:14.210 回答