我已经从一个csv文件中将一组数据作为数据帧导入R。起初,我遇到了以下错误信息:
> data<-read.csv("D:/research/PhD 2014/Data/anaesthesia trials/anaesthesia times.csv", header=TRUE)
> str(data)
'data.frame': 80 obs. of 10 variables:
$ chemical: Factor w/ 2 levels "aquis","benzocaine": 1 1 1 1 1 1 1 1 1 1 ...
$ Fish : int 1 2 3 4 5 6 7 8 9 10 ...
$ Dose : int 10 10 10 10 10 10 10 10 10 10 ...
$ X1 : int 442 0 0 0 0 0 0 0 0 0 ...
$ X2 : int 600 0 0 0 0 0 0 0 0 0 ...
$ X3a : int 885 0 0 0 0 0 0 0 0 0 ...
$ X3b : int 0 0 0 0 0 0 0 0 0 0 ...
$ Recovery: int 650 0 0 0 0 0 0 0 0 0 ...
$ wt..g. : num 0.19 0 0 0 0 0 0 0 0 0 ...
$ tl..mm. : int 35 0 0 0 0 0 0 0 0 0 ...
> Mean<-tapply(data$x1,data$Dose, mean)
Error in tapply(data$x1, data$Dose, mean) :
arguments must have same length
> length(data$Dose)
[1] 80
> length(data$x1)
[1] 0
> dim(data$x1)
NULL
我怀疑这是因为存在缺失值。然而,这些缺失值并不是真正的缺失值,它们是实际的0。我已经在其他论坛上搜索了错误和“tapply”函数,并从“R初学者指南”中复制了代码并用自己的数据替换了它。
我的另一个担忧比缺失的0更为严重,就是根据length()函数,“x1”的长度为0...
我很困惑,因为我已经回去检查了.csv文件,尝试将其保存为另一个.csv文件,但似乎没有任何变化。我已经确保在.csv本身中将单元格格式更改为“数字”,但似乎并没有帮助。R是否由于某种原因无法识别数据?
我可以提供问题的.csv文件,只是不确定最好的方法是什么。
tapply
函数应用于非数据帧对象时,该方法有效,因此在tapply
之前使用as.data.frame(yourdata)
或setDF(yourdata)
会是一种更安全的方式。 - Jason Goal