R无法识别因素

时间:2019-02-19 16:48:12

标签: r kruskal-wallis

我将在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

1 个答案:

答案 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"))