2015-09-25 20 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

相關問題