colMeans和Summary don';行不通
好时机 我是个初学者,在理解R方面有问题。 首先,我不明白为什么colMeans和Summary don';行不通,r,statistics,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]],
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)
这对我来说毫无意义
colMeans可计算错误:
> colMeans(statData)
Error in colMeans(statData) : 'x' must be numeric
但我的数据绝对是数字。
据我所知,这是因为k1-k20是因子。好吧,但当我尝试将它们转换为.numeric(levels(k1)[k1])时,我想可能会有不同的数据作为索引。
因此,问题是如何使这些函数正常工作,可能是改变了表格读取或转换的方式,或者其他什么?我们可以为
因子
列创建索引,将类
更改为数值
,并执行colMeans
i1 <- sapply(statData, is.factor)
statData[i1] <- lapply(statData[i1], function(x) as.numeric(as.character(x)))
colMeans(statData)
i1检查str(statData)
或sapply(statData,class)
以查找是否所有列都是numeric
是的,它们不是数字,我已经编写了“data.frame”:2595 obs。在20个变量中:$k1:系数w/2591水平“0.248322148”,…:40518081225671652240427423981929863…$k2:系数w/2582水平“0”,“0.00013032”,“1353 2081 71 2414 248 2500 341 2486 1664 1379…”k3:Factor w/2594级别“0.00982686”,“0.041484213”,“1611 1938 40 2477 1907 2465 242 2372 1720 928…”好的,所以您有几个Factor
类列,它们不是数值。将其转换为numeric
,即i1您的数据不会作为数字读入。数据中有非数字,可能编码NA
值。修复数据导入。尝试删除第一行(以非常复杂和迂回的方式)表示可能有列标题,应该在read.table
@8txra中设置header=TRUE
。解决实际问题。
i1 <- sapply(statData, is.factor)
statData[i1] <- lapply(statData[i1], function(x) as.numeric(as.character(x)))
colMeans(statData)