这些是关于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)
答案 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))
})
答案 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。