我绝对是菜鸟,尽管我已经将R用于各种小型任务几年了。
对于我的一生,我无法弄清楚如何将“ Desc”功能的结果转换为可以使用的功能。当我保存x <-Desc(mydata)时,类(x)显示为“ Desc”。在R studio中,它位于“值”下,并显示“ 1之清单”。然后,当我单击x时,在第一行中显示“:List of 25”。该对象中有一个数据列表,但是我一生都无法弄清楚如何获取其中的任何数据。
很明显,我对R数据结构有严重的误解,但是我一直在搜索过去90分钟,但无济于事,所以我想我可以伸出援手。
简而言之,我只想从Desc结果中为多个数据集提取描述统计信息的某些方面(N,均值,UB,LB,中位数),然后构建一个可供我使用的小表。
感谢您的帮助。
答案 0 :(得分: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。 $
是此处的关键,它是您访问Desc返回的list
的命名字段的方式。
编辑:如果仅传递一列(如询问者那样),或者仅将向量传递给Desc
,则将返回一个项目列表。适用相同的原理,但通常的语法不同。现在,您将使用:
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"
“列表1”表示您可以通过desc.x[[1]]
访问它,并在其后跟随$
。当您看到类似num[1:3]
之类的内容时,则表示它是atomic vector,因此您访问的第一个成员如var$field$numbers[1]