作者hasaki (小虫)
看板Statistics
标题[问题] 这个R function 该如何使用?
时间Wed Jan 19 12:23:16 2011
describe <- function(x, y = c(rep(1., length(x))))
{
x1 <- x[!is.na(x) & !is.na(y)]
y1 <- y[!is.na(x) & !is.na(y)]
ycat <- sort(unique(y1))
nycat <- length(ycat)
z <- matrix(0., nycat, 7.)
dimnames(z) <- list(c(rep("variable", nycat)),
c("", " mean", " median", " std.dev.", "
min", " max", " # obs"))
for(i in 1.:nycat)
{
cat1 <- ycat[i]
xcat1 <- x1[y1 == cat1]
z[i, 1.] <- cat1
z[i, 2.] <- mean(xcat1)
z[i, 3.] <- median(xcat1)
z[i, 4.] <- sd(xcat1)
z[i, 5.] <- min(xcat1)
z[i, 6.] <- max(xcat1)
z[i, 7.] <- length(xcat1)
}
z
}
假如我的数据包含5个变数 v1,v2,v3,v4,v5
共有2000笔资料
该如何利用这个function 来获得各个变数的mean,median,std.dev...etc
如果直接用x=data代入的话(也就是describe(data))
每个统计量都只会跑出NA,而且只显示一个变数
但如果用x=data$v1似乎不太有效率
苦恼中,烦请帮忙解惑!!
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 68.40.51.55
1F:→ diplazium:试着用apply(数据, 2, describe)看看 01/20 08:41
2F:→ gsuper:为什麽不直接用 summary() ? 01/20 15:13
3F:→ diplazium:gsuper大说的有理: apply(数据,2,summary/sd) 01/20 19:37
4F:→ gsuper: for(i in 1.:nycat) 这个写法很有趣 01/20 23:47
5F:推 acecc:那个1. 的用法跟用1 有什麽差异啊? 那个"."是? 01/22 11:04
6F:→ gsuper:我之前写回圈之前都会写一行 " i <- 1 ; " 01/23 03:30
7F:→ gsuper:有了那个点就不用写 i <- 1; 01/23 03:31
8F:推 acecc:i <- 1 ; 不用先打吧 i in 1:n 就是指i从1跑到n了 01/23 10:13
9F:→ acecc:很好奇那个"."的用法跟用意还有有没有"."的差异:) 01/23 10:15
10F:推 gsuper:真的ㄟ 更好奇那个"."事干啥用的了 01/23 16:47