colMeans和Summary不起作用

时间:2016-11-07 12:29:42

标签: r statistics

好时光 我是初学者,我有理解R的问题。 首先,我无法理解为什么summary()无法正确使用data.frame 我有相当大的数据表2595x20,并以这种方式阅读:

table=read.table('data.txt')
statData <- data.frame(k1=table$V1[2:dim(table)[1]],       
                         k2=table$V2[2:dim(table)[1]], 
                         k3=table$V3[2:dim(table)[1]], 
                         k4=table$V4[2:dim(table)[1]],
                         k5=table$V5[2:dim(table)[1]],
                         k6=table$V6[2:dim(table)[1]],
                         k7=table$V7[2:dim(table)[1]],
                         k8=table$V8[2:dim(table)[1]],
                         k9=table$V9[2:dim(table)[1]],
                         k10=table$V10[2:dim(table)[1]],
                         k11=table$V11[2:dim(table)[1]],
                         k12=table$V12[2:dim(table)[1]],
                         k13=table$V13[2:dim(table)[1]],
                         k14=table$V14[2:dim(table)[1]],
                         k15=table$V15[2:dim(table)[1]],
                         k16=table$V16[2:dim(table)[1]],
                         k17=table$V17[2:dim(table)[1]],
                         k18=table$V18[2:dim(table)[1]],
                         k19=table$V19[2:dim(table)[1]],
                         k20=table$V20[2:dim(table)[1]])
attach(statData)

然后使用摘要有以下内容:

> summary(statData)
           k1                 k2                 k3                  k4      
 2          :   3   0          :   9   0.419540527:   2   -0.092111263:   2  
 1.035054208:   2   0.000957854:   2   0.445687651:   2   -0.15798793 :   2  
 1.159481195:   2   0.004444444:   2   0.00982686 :   1   0           :   2  
 3.32231405 :   2   0.024900398:   2   0.041484213:   1   0.049426895 :   2  
 0.248322148:   1   0.029172089:   2   0.045053272:   1   0.699004975 :   2  
 0.284853052:   1   0.037267081:   2   0.046308725:   1   -0.002051282:   1  
 (Other)    :2584   (Other)    :2576   (Other)    :2587   (Other)     :2584  

这对我没有意义。

colMeans犯了一个错误:

> colMeans(statData)
Error in colMeans(statData) : 'x' must be numeric

但我的数据绝对是数字。 据我了解,因为k1-k20是因素。好吧,但是当我尝试用as.numeric(levels(k1)[k1])转换它们时,我有不同的数据可能是我想的索引。 所以问题是如何让这些功能正常工作并且可能正在改变桌面阅读或播放的方式,或其他什么?

1 个答案:

答案 0 :(得分:0)

我们可以为factor列创建索引,将class更改为numeric并执行colMeans

i1 <- sapply(statData, is.factor)
statData[i1] <- lapply(statData[i1], function(x) as.numeric(as.character(x)))
colMeans(statData)