我将在R中进行Kruskal-Wallis测试(测试鱼(五组,从1-5进行测量)与鱼的攻击状态之间是否存在差异),但似乎我有因素的问题。我从Excel导入数据集。 R不会将优势状态识别为一个因素(当询问is.factor(dominance_status)时返回FALSE。当我将数据集导入为文本文件时,R不会将第一行识别为列名,而是将V1和V2写为列的名称。
如果有人可以帮助我解决这个问题,我将非常感谢!
Attack_data
Indvid Dominance_status Attacks
<chr> <dbl> <dbl>
1 a1 3 0
2 a2 3 0
3 a3 4 0
# ... with 22 more rows
is.factor(Dominance_status)
[1] FALSE
答案 0 :(得分:1)
由于Dominance_status是数字编码的,因此大多数read *函数会猜测它是数字类而不是因子。
读取数据后,您可以简单地使用as.factor()将类更改为factor,以强制R将Dominance_status视为因子。
df <- data.frame(stringsAsFactors=FALSE,
Indvid = c("a1", "a2", "a3"),
Dominance_status = c(3, 3, 4),
Attacks = c(0, 0, 0)
)
is.factor(df$Dominance_status)
#> [1] FALSE
df$Dominance_status <- as.factor(df$Dominance_status)
is.factor(df$Dominance_status)
#> [1] TRUE
由reprex package(v0.2.0)于2019-02-20创建。
或者,您可以使用colClasses来指定Dominance_status是首先读取数据时的一个因素。使用read.csv的方法如下:
read.csv(filename, colClasses = c(Dominance_status = "factor"))