作者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