首页 文章

R语言:如何打印/查看样本子集的摘要统计信息?

提问于
浏览
5

这些是关于R的统计编程的一些新手问题,我无法在网上找到答案 . 我的数据框在下面的代码中标记为"eitc" .

1) 一旦我've loaded in a data frame, I would like to look at summary statistics. I'使用了这些功能:

eitc <- read.dta(file="/Users/Documents/eitc.dta")
summary(eitc)
sapply(eitc,mean,na.rm=TRUE) #for sample mean, min, max, etc.

如何在满足某些条件时查找数据框的摘要统计信息 . 例如,当变量“children”大于或等于1时,我希望看到所有变量的汇总统计信息 . 等效的Stata代码是:

summarize if children >= 1

2) 同样,如何在满足某些资格要求时找到具体参数?例如,当"post93"变量等于零且"anykids"变量等于1时,我想找到变量"work"的平均值 . 等效的Stata代码是:

mean work if post93==0 & anykids==1

3) 理想情况下,当我运行上面的汇总统计时,我想知道计算中包含了多少观察值/符合标准 .

4) 当我读入数据框时,看到数据集中包含了多少个观察结果(也许有多少行具有缺失值或"NA"在其中)也是很好的 .

5) 另外,我一直在使用以下代码创建虚拟变量 . 这是正确的方法还是更有效的路线?

post93.dummy <- as.numeric(eitc$year>1993)
eitc=cbind(eitc,post93.dummy)

4 回答

  • 0

    subset 回答了很多要求,例如:

    summary(subset(eitc, post93 == 0 & anykids == 1, select=work))
    nrow(subset(eitc, post93 == 0 & anykids == 1, select=work)) # for number of obs.
    

    ?subset 文档有很好的例子 .

    连接虚拟变量的 cbind 方法是不必要的 . 做就是了:

    eitc$post93.dummy <- as.numeric(eitc$year>1993)
    
  • 6

    我将在 datasets 包中使用 mtcars 数据 . 见 ?mtcars .

    Ad 1.gear 大于3时,您可以看到 mtcars 的摘要:

    summary(mtcars[mtcars$gear > 3, ])
    ## or by using Tukey's five number summary
    sapply(mtcars[mtcars$gear > 3, ], fivenum)
    

    Ad 2. 使用 with

    with(mtcars, mean(hp[gear > 3 & mpg > 20]))
    

    Ad 3. 同上(但使用 length ):

    with(mtcars, length(hp[gear > 3 & mpg > 20]))
    ## or
    sapply(mtcars[mtcars$gear > 3, ], length) ## which is trivial when there are no NA's
    sapply(mtcars[mtcars$gear > 3, ], length, na.rm = TRUE) ## but this one's good when there are NA's
    nrow(mtcars[mtcars$gear > 3, ])
    

    Ad 4. 见上一页,但要找出答案

    有多少行有缺失值或“NA”

    做这样的事情:

    apply(dtf, 1, function(x) length(is.na(x)))
    

    Ad 5. 这不是虚拟变量,这是原始数据的某种子集,按列连接 . 无论如何你想要实现什么?

    Please be concise. One question per question, please!

  • 11

    我建议你看一下plyr包来生成摘要 . 这是一些快速代码(不运行);

    #Generate a new factor based on the numeric value of children with 5 levels
    eitc$childfac<-cut(eitc$children,5)
    
    # Generate mean and sd of the variables foo and bar based on that factor
    ddply(eitc, .(childfac), function(df) {
      return(data.frame(meanfoo=mean(df$foo), sdfoo=stdev(df$foo),
        meanbar=mean(df$bar), sdbar=stdev(df$bar))
      })
    

    您可能还想查看hmiscpsych包以获取更具描述性的stat例程 . (查看Quick-R了解更多信息)

  • 2

    以下是使用data.table快速显示数据子集的一些摘要统计信息的方法 .

    library(data.table)
    
    dt <- data.table(mtcars)
    
    var.names <- c("cyl", "disp", "hp")
    dt[mpg > 20, 
       list(name=var.names, N=.N, mean=lapply(.SD, mean), sd=lapply(.SD, sd)), 
       .SDcols=var.names]
    

    您可以使用 model.matrix 创建虚拟变量,请参阅here .

相关问题