0

我正在 RStudio 中完成一项任务,检查汽车制造商及其碰撞安全等级之间的差异。现在我只想测试黑白福特和雪佛兰,但“品牌”类别还有另外 20 个品牌。为了使用这些变量执行简单的 T 测试,我尝试了

t.test(Head_IC~make,alternative=“two.lateral”,配对=T)

这给了我

“分组因子必须恰好有 2 个级别”

我在堆栈上环顾四周,发现人们通常使用逗号来修复此错误。我发现如果我放置一个逗号黑白“Head_IC”和“make”,我会得到另一个单独的错误。我的问题是我的 x 和 y 值吗?还是 b/c “make” 由几个不同的品牌组成?谢谢您的帮助!

4

1 回答 1

1

R 使用所谓的“方法”来执行不同的行为,具体取决于赋予函数的对象类型。

t.test(Head_IC~make, alternative= "two.sided", paired=T)

不同于

t.test(Head_IC, make, alternative= "two.sided", paired=T)

因为第一个接受一个公式参数,其中所有数字数据都在Head_IC,所有类别数据都在make。第二种形式假定第一组的Head_IC所有数值数据都在 中,而第二组的所有数值数据都在 中make

这是有益的,因为它允许您方便地获得相同的结果,即使您的数据格式可能略有不同。

不幸的是,正如您所发现的,您的数据格式不适合使用t.test. 有几种方法可以解决这个问题。

子集您的数据

data_subset <- your_data_object[your_data_object$make %in% c("Ford", "Chevrolet"), ]
t.test(Head_IC~make, alternative= "two.sided", paired=T, data = data_subset)

获取两个向量

Ford <- your_data_object$Head_IC[your_data_object$make == "Ford"]
Chev <- your_data_object$Head_IC[your_data_object$make == "Chevrolet"]

t.test(Ford, Chev, alternative = "two.sided", paired = TRUE)

有很多很多方法可以解决您的问题,并且您可能想研究如何对您正在使用的任何工具集工作的数据进行子集化和转换。

于 2018-05-23T20:54:33.967 回答