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

时间:2011-01-29 08:11:23

标签: r statistics stata

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

1)一旦我加载了数据框,我想查看摘要统计信息。我使用过这些功能:

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 :(得分:11)

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) 

答案 1 :(得分:6)

我将使用mtcars包中提供的datasets数据。请参阅?mtcars

广告1。mtcars大于3时,您可以看到gear的摘要:

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

广告2。使用with

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

广告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, ])

广告4。请参阅上一页,但要查找

  

有多少行缺少值或   其中“NA”

做这样的事情:

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

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

请简明扼要。请问每个问题一个问题!

答案 2 :(得分:2)

我建议您查看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了解更多信息)

答案 3 :(得分:0)

以下是使用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