首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查每组数据是否有相同数量的观测值?

如何检查每组数据是否有相同数量的观测值?
EN

Stack Overflow用户
提问于 2012-05-02 23:48:12
回答 3查看 302关注 0票数 2

我正在编写一些代码,需要检查给定数据输入的所有组大小是否相等。例如,假设我想知道"mpg“数据集(在ggplot2包中)是否具有:

每种驱动(四轮、前轮、每种发动机类型(4缸、6缸、8缸)的汽车的manufacturer

  • Equal数
  • 相等)

对于mpg这样的数据,可以通过检查摘要输出来回答其中的一些问题。

代码语言:javascript
复制
library(ggplot2)   # contains the mpg dataset
summary(mpg$drive) # shows the breakdown of cars by drive-type, 
                   # which we can verify is unequal

但是我觉得我错过了一种简单的方法来检查组的大小是否相等。有没有什么我可以像are.groups.of.equal.size(x)那样调用的单一的神话函数?或者返回这些信息的另一个基本函数(或它们的组合)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-03 00:12:44

正如Joran所说,从这里到圣诞节,我们可以发明1000种方法来解决这个问题。我闻到了一个微基准的挑战:

代码语言:javascript
复制
are.groups.of.equal.size <- function(x) {
    y <- rle(as.character(sort(x)))$lengths
    all(y%in%mean(y))
}


are.groups.of.equal.size(c(3, 3, 3))
are.groups.of.equal.size(mtcars$cyl)
are.groups.of.equal.size(CO2$Plant)
are.groups.of.equal.size(mtcars$carb)
票数 2
EN

Stack Overflow用户

发布于 2012-05-03 00:06:46

这里有一种方法:

代码语言:javascript
复制
are.groups.of.equal.size <- function(x)length(unique(table(x))) == 1L

are.groups.of.equal.size(mpg$manufacturer)
# [1] FALSE
are.groups.of.equal.size(mpg$drv)
# [1] FALSE
are.groups.of.equal.size(mpg$year)
# [1] TRUE

注意,如果需要,table可以选择如何处理数据中的NA

票数 4
EN

Stack Overflow用户

发布于 2012-05-04 19:29:32

采用可持续发展办法:

代码语言:javascript
复制
are.groups.of.equal.size <- function(x) {
   x2 <- tapply(x, x, length)
   sd(x2)==0 | length(x2)==1
}

are.groups.of.equal.size(c(3, 3, 3))
are.groups.of.equal.size(mtcars$cyl)
are.groups.of.equal.size(CO2$Plant)
are.groups.of.equal.size(mtcars$carb)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10423269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档