首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据同一行中的不同列值选择数据集

根据同一行中的不同列值选择数据集
EN

Stack Overflow用户
提问于 2019-04-16 06:10:17
回答 1查看 241关注 0票数 1

我有一个大约有80列和1000行的数据集,该数据集的示例如下:

代码语言:javascript
复制
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之间不同的所有信息,如下所示:

代码语言:javascript
复制
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列。

我尝试了这个命令:

代码语言:javascript
复制
library(dplyr)
new.file=my.file %>%
  filter(gend.y != gend.x)

但并不管用。此时将显示以下消息:

代码语言:javascript
复制
Error in Ops.factor(gend.y, gend.x) : level sets of factors are different
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-16 09:25:20

正如@divibisan所说:“仍然不是一个可重复的例子,但错误让你更接近。这两个变量是因子,因子的解释取决于代码和”级别“属性。只比较具有相同级别集(以相同顺序)的因子时要小心。您可能希望在比较之前将它们转换为字符,或者修复匹配的级别。”

所以我这样做了(将它们转换成字符):

代码语言:javascript
复制
my.file$new.gend.y=as.character(my.file$gend.y)
my.file$new.gend.x=as.character(my.file$gend.x)

在我使用新变量(现已转换为字符)运行之前的命令后:

代码语言:javascript
复制
library(dplyr)
new.file=my.file %>%
  filter(new.gend.y != new.gend.x | is.na(new.gend.y != new.gend.x))

现在就像我预期的那样工作了。Credits @divibisan

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55697874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档