根据不同的列值但在同一行中选择一个数据集

时间:2019-04-15 22:10:17

标签: r

我有一个大约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

1 个答案:

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