【问题标题】:R describeby function subscript out of bounds errorR describeby 函数下标越界错误
【发布时间】:2020-06-19 02:57:44
【问题描述】:

我是 R 的新手,我正在尝试使用 psych 包中的 describeby 函数获取按多个变量分组的描述性统计数据。

这是我要运行的内容:

JL <- describeBy(df$JL, group=list(df$Time, df$Cohort, df$Gender), digits=3, skew=FALSE, mat=TRUE)

我收到错误消息Error in `[<-`(`*tmp*`, var, group + 1, value = dim.names[[group]][[groupi]]) : subscript out of bounds

我只使用我的 Gender 变量(在此数据集中是二分法)收到此错误消息。当我取出 mat=TRUE 参数时,我能够运行代码,并且我看到它正在为 Gender 生成带有 NULL 的分组。我在其他答案中看到这与数组越界有关,但我不确定如何进行故障排除。任何建议表示赞赏。

非常感谢。

【问题讨论】:

  • 必须使用 psych 中的特定功能吗?换句话说,可以选择使用来自 dplyr 的 group_by 和 summarise_at 吗?
  • 嗯,没问题,只要我能将相同的描述放入矩阵中!

标签: r psych


【解决方案1】:

您可以使用 dplyr,并添加一些自定义功能。

library(dplyr)

se <- function(x) sd(x, na.rm=TRUE)/sqrt(length(na.omit(x)))
rnge <- function(x) diff(range(x, na.rm=TRUE))

group_by(df, Time, Cohort, Gender) %>%
  summarise_at(vars(JL), .funs=list(n=length, mean=mean, sd=sd, min=min, max=max, range=rnge, se=se)) %>% 
  as.data.frame()

使用 mtcars 数据集:

group_by(mtcars, vs, am, cyl) %>%
  summarise_at(vars(mpg), .funs=list(n=length, mean=mean, sd=sd, min=min, max=max, range=rnge, se=se)) %>% as.data.frame()

  vs am cyl  n mean    sd  min  max range    se
1  0  0   8 12 15.1 2.774 10.4 19.2   8.8 0.801
2  0  1   4  1 26.0    NA 26.0 26.0   0.0    NA
3  0  1   6  3 20.6 0.751 19.7 21.0   1.3 0.433
4  0  1   8  2 15.4 0.566 15.0 15.8   0.8 0.400
5  1  0   4  3 22.9 1.453 21.5 24.4   2.9 0.839
6  1  0   6  4 19.1 1.632 17.8 21.4   3.6 0.816
7  1  1   4  7 28.4 4.758 21.4 33.9  12.5 1.798

使用 psych 包中的 describBy 函数会返回您的错误:

library(psych)
describeBy(mtcars$mpg, group=list(mtcars$vs, mtcars$am, mtcars$cyl), digits=3, skew=FALSE, mat=TRUE)

[&lt;-(*tmp*, var, group + 1, value = 中的错误 dim.names[[group]][[groupi]]) : 下标越界

因为并非三组的所有组合都存在于数据中。

with(mtcars,
     ftable(table(vs,am,cyl)))
#      cyl  4  6  8
#vs am             
#0  0       0  0 12
#   1       1  3  2
#1  0       3  4  0
#   1       7  0  0

【讨论】:

  • 谢谢!这会起作用,但我意识到问题是这三个组的组合之一正在返回 NA。
  • 实际上不是 NA,更像是 MIA(在行动中失踪)。
猜你喜欢
  • 1970-01-01
  • 2015-04-03
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多