好时光
我是初学者,我有理解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])
转换它们时,我有不同的数据可能是我想的索引。
所以问题是如何让这些功能正常工作并且可能正在改变桌面阅读或播放的方式,或其他什么?
答案 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)