2016-05-03 14 views
0

変数RBC,WBC、およびhemoglobinにわたる平均試薬ベクトルを計算しようとしています。私はかなり新しいRですので、私の質問は次のとおりです。Rで次の計算を行う簡単な方法を教えてください。データは、Rencherの表6.19からのものです。私はRencherの例に従うと、Rの計算を練習しようとしています。2因子表の平均ベクトルの計算

reagent.dat <- read.table("https://dl.dropboxusercontent.com/u/28713619/reagent.dat") 
colnames(reagent.dat) <- c("reagent", "subject", "RBC", "WBC", "hemoglobin") 
reagent.dat$reagent <- factor(reagent.dat$reagent) 
reagent.dat$subject <- factor(reagent.dat$subject) 
library(plyr) 
library(dplyr) 
library(reshape2) 
# Calculate the means per variable, across reagents 
reagent.datm <- melt(reagent.dat) 
group.means <- ddply(reagent.datm, c("variable","reagent"), summarise,mean=mean(value)) 
group.means <- tbl_df(group.means) 
newdata <- group.means %>% select(reagent, mean) 
# Store the group means into a matrix 
y_bar <- matrix(c(rep(NA, times=12)), ncol=4) 
for (i in 1:4) 
    y_bar[,i] <- as.matrix(filter(newdata, reagent == i)$mean, ncol=1) 
y_bar 

答えて

2

dplyrパッケージには、実際には非常に簡単にコードを単純化しているため、それがいかに強力の学習間違いなく価値があることができます。例として:あなたはdata.tableを使用することができます

reagent.dat <- read.table("https://dl.dropboxusercontent.com/u/28713619/reagent.dat") 
colnames(reagent.dat) <- c("reagent", "subject", "RBC", "WBC", "hemoglobin") 

#Using dplyr 
library(dplyr) 
reagentmeans <- reagent.dat %>% select(reagent, RBC, WBC, hemoglobin) %>% 
group_by(reagent) %>% 
summarize(mean_RBC = mean(RBC), mean_WBC = mean(WBC), 
mean_hemoglobin = mean(hemoglobin)) 

> reagentmeans 
Source: local data frame [4 x 4] 

    reagent mean_RBC mean_WBC mean_hemoglobin 
    (fctr) (dbl) (dbl)   (dbl) 
1  1 7.290 4.9535   15.310 
2  2 7.210 4.8985   15.725 
3  3 7.055 4.8810   15.595 
4  4 7.025 4.8915   15.765 
+0

は 'summarize'と' group_by'について指摘をいただき、ありがとうございます。私はあなたの助言に従います。 – hpesoj626

2

library(data.table) 
setDT(reagent.dat)[, lapply(.SD, mean), by = reagent, .SDcols = c('RBC', 'WBC', 'hemoglobin')] 
# reagent RBC WBC hemoglobin 
#1:  1 7.290 4.9535  15.310 
#2:  2 7.210 4.8985  15.725 
#3:  3 7.055 4.8810  15.595 
#4:  4 7.025 4.8915  15.765 
+0

私は 'data.table'について初めて聞いたことがあります。ありがとうございました。 – hpesoj626

+0

data.framesよりもはるかに効率的です。 – Sotos