我已将一组数据导入R作为.csv文件中的数据框。最初,我收到如下错误消息:
> 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。我已经搜索了错误和函数&#39; tapply&#39;在这里,在其他论坛上,实际上复制了来自&#34; R&#34;的初学者指南并用我自己的数据替换它。
我的另一个问题是,与缺少零相比更有问题的是&#39; x1&#39;长度为&#39; 0&#39;根据length()函数...
我很困惑,因为我已经回去检查.csv文件,尝试将其保存为另一个.csv文件,似乎没有任何改变。我已确保将单元格格式更改为&#34; number&#34;在.csv本身,这似乎没有帮助。 R是否由于某种原因无法识别数据?
我可以提供问题.csv文件,只是不确定最好的方法是什么。
答案 0 :(得分:2)
您应该在data$X1
来电中使用tapply
(大写X)。 R中的名称区分大小写。如果有效,请告诉我们。
答案 1 :(得分:0)
尝试将输入数据转换为数据框(data.frame())。这为我解决了类似的错误。
&#xA;答案 2 :(得分:0)
该函数轻按需要一个因子变量以将结果分组。在您的示例中,INDEX变量data $ Dose是整数。
尝试:
data[, Dose] <- as.factor(data[, Dose])
Mean <- tapply(data$X1, data$Dose, mean)