2015-09-25 46 views
1

给出一列中的条件值,我试图使用'r'在另一列中获取值的唯一列表。例如,如果输入是sex =“M”,那么输出应该是一个唯一名称列表(John,Allan,Matt,Chris)。 如果输入的是Country = US,则返回唯一名称列表(John,Kate)。任何解决方案将不胜感激!使用r在另一列中根据条件找到唯一值

Country  Name  Sex 
US    John  M 
US    John  M 
US    Kate  F 
Canada   Allan  M 
Canada   Kate  F 
Canada   Matt  M 
England  Nicole  F 
Germany  Kate  F 
Germany  Matt  M 
Germany  Chris  M 

回答

1

如果我理解正确的这个,你只需要使用subset

你可以使用它作为

subset(data,sex=="m",select=c("whatever","cols you want to keep")) 

注意,如果你想所有的人,你不需要把任何选择。

如果你有重复项,你可以通过在其上运行unique()来获得unique条目。

为您的数据,这会是这样......

mydat=read.table("clipboard", header=TRUE) 
unique(subset(mydat, Sex=="M")) 
    Country Name Sex 
1  US John M 
4 Canada Allan M 
6 Canada Matt M 
9 Germany Matt M 
10 Germany Chris M 
+0

感谢雷。是否有办法获得矢量(“约翰”,“艾伦”,“马特”,“克里斯”)而不是子集整个数据集? – xineers

+2

可能有很多方法可以做到这一点。 mydat $ Name [mydat $ Sex ==“M”] 是一种方法。 这将有两个马特,因为有一个加拿大马特和德国马特。为了获得唯一的,在上面运行唯一。 – RayVelcoro

+0

再次感谢雷 – xineers

相关问题