我有一个大约80列和1000行的数据集,该数据集的示例如下:
ID gend.y gend.x Sire Dam Weight
1 M F Jim jud 220
2 F F josh linda 198
3 M NA Claude Bere 200
4 F M John Mary 350
5 F F Peter Lucy 298
我需要选择gend.y和gend.x之间不同的所有信息,例如:
ID gend.y gend.x Sire Dam Weight
1 M F Jim jud 220
3 M NA Claude Bere 200
4 F M John Mary 350
请记住,我也需要选择另外76列。
我尝试了以下命令:
library(dplyr)
new.file=my.file %>%
filter(gend.y != gend.x)
但是不行。并显示以下消息:
Error in Ops.factor(gend.y, gend.x) : level sets of factors are different
答案 0 :(得分:0)
正如@divibisan所说:“仍然不是可重现的示例,但是错误会使您更接近。这两个变量是因素,对因素的解释取决于代码和“ levels”属性。请谨慎比较具有相同级别水平(按相同顺序)的系数。您可能希望在比较之前将它们转换为字符,或固定级别以使其匹配。”
所以我做到了(将它们转换为字符):
my.file$new.gend.y=as.character(my.file$gend.y)
my.file$new.gend.x=as.character(my.file$gend.x)
在使用新变量(现在已转换为字符)运行上一个命令之后:
library(dplyr)
new.file=my.file %>%
filter(new.gend.y != new.gend.x | is.na(new.gend.y != new.gend.x))
现在按预期工作了。积分@divibisan