理由は「n」は、他の探索的な値は以下のように保管されている間、その値は、numSummaryObj$n
として保持されているので、行方不明になりましたnumSummaryObj$table
。
file <- "https://vincentarelbundock.github.io/Rdatasets/csv/datasets/ToothGrowth.csv"
toothGrowth <- read.table(file, header=T, sep=",", row.names=1, na.strings="NA", dec=".", strip.white=TRUE)
numSumTooth <- RcmdrMisc::numSummary(toothGrowth[, c("len", "dose")])
nST <- data.frame(numSumTooth$table, numSumTooth$n)
names(nST) <- c(colnames(numSumTooth$table), "n")
write.csv(nST, "numSumTooth.csv")
は==
EDIT:それをバック置く
は、単純なcbind
またはdata.frame
コマンドが必要です
を私は個人的にdplyr
とtidyr
のようなパッケージとデータハンドリングにいつか投資します、彼らは将来的に多くのマイレージと柔軟性を提供します。例えば、data.frameで同じnumSummaryを生成するために、あなたは次のことを実行できます。
toothGrowth %>%
select(-supp) %>%
gather(var, val) %>% #convert the wide data frame into the long-form, with var = dose and len
group_by(var) %>%
summarise(mean = mean(val), sd = sd(val),
IQR = IQR(val),
`0%`= min(val),
`25%` = quantile(val, 0.25),
`50%` = median(val),
`75%` = quantile(val, .75),
`100%` = max(val),
n = n())
# A tibble: 2 × 10
var mean sd IQR `0%` `25%` `50%` `75%` `100%` n
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
1 dose 1.166667 0.6288722 1.5 0.5 0.500 1.00 2.000 2.0 60
2 len 18.813333 7.6493152 12.2 4.2 13.075 19.25 25.275 33.9 60
このアプローチで柔軟性があなたのような(各グループごとに意味を見つけるためにsupp
内を選択することができるということですこの場合は):
toothGrowth %>%
# select(-supp) %>%
gather(var, val, -supp) %>%
group_by(supp, var) %>%
summarise(mean = mean(val), sd = sd(val),
IQR = IQR(val),
`0%`= min(val),
`25%` = quantile(val, 0.25),
`50%` = median(val),
`75%` = quantile(val, .75),
`100%` = max(val),
n = n())
Source: local data frame [4 x 11]
Groups: supp [?]
supp var mean sd IQR `0%` `25%` `50%` `75%` `100%` n
<fctr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
1 OJ dose 1.166667 0.6342703 1.5 0.5 0.500 1.0 2.000 2.0 30
2 OJ len 20.663333 6.6055610 10.2 8.2 15.525 22.7 25.725 30.9 30
3 VC dose 1.166667 0.6342703 1.5 0.5 0.500 1.0 2.000 2.0 30
4 VC len 16.963333 8.2660287 11.9 4.2 11.200 16.5 23.100 33.9 30
==
別の方法としては、(あなたが長い繰り返し構文を要約書くことは雑用であると感じた場合)例えば、関数を作成することです:
カスタム関数を実行すると
checkVar <- function(varname, data){
val <- data[, varname]
tmp <- data.frame(mean = mean(val),
sd = sd(val),
IQR = IQR(val),
`0%`= min(val),
`25%` = quantile(val, 0.25),
`50%` = median(val),
`75%` = quantile(val, .75),
`100%` = max(val),
n = length(val))
names(tmp) <- c("mean", "sd", "IQR", "`0%`", "`25%`", "`50%`", "`75%`", "`100%`", "n")
rownames(tmp) <- varname
return(tmp)
}
はあなたの要約統計量を与える:
checkVar("dose", ToothGrowth)
mean sd IQR `0%` `25%` `50%` `75%` `100%` n
dose 1.166667 0.6288722 1.5 0.5 0.5 1 2 2 60
そして単一data.frameにそれらを置くことは、例えば、適用する機能を含み、 lapply
で:
do.call(rbind, lapply(c("dose", "len"), checkVar, data=ToothGrowth))
mean sd IQR `0%` `25%` `50%` `75%` `100%` n
dose 1.166667 0.6288722 1.5 0.5 0.500 1.00 2.000 2.0 60
len 18.813333 7.6493152 12.2 4.2 13.075 19.25 25.275 33.9 60
あなたの問題に[再現性](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)の例を提供してください。私はテストで 'numSummary'をエクスポートすることに問題はありません。 –
あなたの返信ありがとうございましたAdam、私は持っている問題を再現するスクリプトを追加しました。 – Scottmeup