我有一个大约有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
发布于 2019-04-16 09:25:20
正如@divibisan所说:“仍然不是一个可重复的例子,但错误让你更接近。这两个变量是因子,因子的解释取决于代码和”级别“属性。只比较具有相同级别集(以相同顺序)的因子时要小心。您可能希望在比较之前将它们转换为字符,或者修复匹配的级别。”
所以我这样做了(将它们转换成字符):
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))
现在就像我预期的那样工作了。Credits @divibisan
https://stackoverflow.com/questions/55697874
复制相似问题