【发布时间】:2012-06-08 17:28:23
【问题描述】:
我想在我的数据框(catch)中只选择“tspp.name”变量与“elasmo.name”变量相同的行。
例如,在这种情况下会选择第 #74807 行和 #74809 行,但不会选择第 #74823 行,因为 elasmo.name 是“skate”,而 tspp.name 是“Northern frog”。
我确信对此有一个简单的答案,但我还没有找到它。任何提示将不胜感激。
> catch[4:6,]
gear tripID obsID sortie setID date time NAFO lat long dur depth bodymesh
74807 GRL2 G00001 A 1 13 2000-01-04 13:40:00 2H 562550 594350 2.000000 377 80
74809 GRL2 G00001 A 1 14 2000-01-04 23:30:00 2H 562550 594350 2.166667 370 80
74823 GRL2 G00001 A 1 16 2000-01-05 07:45:00 2H 561450 593050 3.000000 408 80
codendmesh mail.fil long.fil nbr.fil hook.shape hook.size hooks VTS tspp tspp.name elasmo
74807 45 NA NA NA NA NA 3.3 2211 Northern shrimp 2211
74809 45 NA NA NA NA NA 3.2 2211 Northern shrimp 2211
74823 45 NA NA NA NA NA 3.3 2211 Northern shrimp 211
elasmo.name kept discard Tcatch date.1 latitude longitude EID
74807 Northern shrimp 2747 50 2797 2000-01-04 56.91667 -60.21667 G00001-13
74809 Northern shrimp 4919 100 5019 2000-01-04 56.91667 -60.21667 G00001-14
74823 Skates 0 50 50 2000-01-05 56.73333 -60.00000 G00001-16
fgear
74807 Shrimp trawl (stern) with a grid
74809 Shrimp trawl (stern) with a grid
74823 Shrimp trawl (stern) with a grid
【问题讨论】:
-
catch[with(catch, tspp.name==elasmo.name),]做你想做的事吗? -
或
catch[which(catch$tspp.name == catch$elasmo.name),] -
或
catch[catch$tspp.name == catch$elasmo.name,]。 -
布兰登和贾斯汀(第二个)答案之间的区别在于,如果
NA值出现在tspp.name或elasmo.name中,它们是如何处理的。 -
subset(catch, tspp.name ==elasmo.name)就像which方法一样,只要测试的两个值中的任何一个都是 NA,NA 就会返回不匹配的行。