2016-04-22 9 views
0

Iは、列グループが2に等しく、場合組み合わされた条件に基づいて列IDに対応する要素を見つけることを試みているの最大値回の出現OBS列。R:他の列に合わせた条件に基づいて、1列に要素を見つける方法

Rでこのタスクを実行するにはどうすればよいですか?

ID <- as.factor(c("A","B","C","D","E","F")) 
OBS <- c(1,3,2,8,3,10) 
GROUP <- as.factor(c(1,1,1,2,2,2))  
df <- data.frame(ID,OBS,GROUP) 

どうもありがとう:

は、ここに私のデータセットです。

+1

あなたは何を試しましたか?明らかにするには、合計データセットから最大OBSを外したいか、GROUP == 2の最大値のみを使用しますか? – rawr

+1

後者の場合、 'df、df $ GROUP、function(x)x [which.max(x $ OBS)、])$ \' 2 \ ''ですが、そうしないでください。 – Frank

+0

この例では、OBSの最大値はGROUP 2の場合10です.IDの対応する要素がFの場合、GROUPと最大OBSに基づいて対応する要素を探したいと思います。 –

答えて

2

あなたが最初にこれはトリックを行う必要があり、GROUPは2に等しくなり、その後、OBSの値が最も高いのIDを特定しなければならないという条件で、データフレームのサブセットにすることを意味すると仮定すると:

df2 <- df[df$GROUP==2,] 
df2$ID[df2$OBS==max(df2$OBS)] 
+2

パッケージで簡単な構文を述べる価値があるかもしれません: 'library(data.table); setDT(df)[GROUP == 2] [OBS == max(OBS)] 'または' library(dplyr); df%>%filter(GROUP == 2)%>%filter(OBS == max(OBS)) ' – Frank

+0

1行のコードで行うことは可能ですか? –

+1

'(DF、ID [中which.max(OBS * GROUPの%%2)])'私も0行でそれをやったが、私はどのように – rawr