7

这些是关于 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”变量等于 0 且“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

4 回答 4

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) 
于 2011-01-29T08:51:46.357 回答
6

我将使用包中mtcars可用的数据datasets。见?mtcars

广告1.可以看到mtcarswhengear大于3的总结:

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.这不是虚拟变量,这是原始数据的某种子集,按列连接。你到底想达到什么目的?

请简明扼要。请一题一题!

于 2011-01-29T10:37:37.930 回答
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包以获得更多描述性的统计例程。(查看Quick-R了解更多信息)

于 2011-01-29T10:54:43.973 回答
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用于创建虚拟变量,请参见此处

于 2016-11-07T18:54:35.667 回答