この質問を投稿する前に、いくつかの質問で同様のものを検索しましたが、探しているものを見つけることができませんでした。この投稿が重複している場合は、お詫び申し上げます。適切な質問に転送していただければ幸いです。
次のデータがあります。
data<-data.frame(a=c(0:10),b=c(5:15),c=c(10:20),d=c(1:5,15:20))
私は「単純に」最大値を持つ行の列名を取得しようとしています。私はこのタスクを
names(data)[apply(data,1,which.max)]
実際には、最大の条件に適合する 2 つの列 (c & d[6:10]) があるため、実際に取得したいのは次のようなものです。
result<-c("c","c","c","c","c","double","double","double","double","double")
したがって、 which.max の動作では最初の要素しか取得できない (少なくとも私にはそう思われる) ため、非常に複雑な解決策になる可能性があると考えました。各行の重複した要素を見つけて、これらのインデックスのいずれかが which.max を使用したコードのインデックスと一致する場合は、それを「double」に変更します。多かれ少なかれこのようなもの:
index<-t(apply(data,1,function (x) duplicated(x,fromLast=TRUE)))
colnames(index)<-colnames(data)
もう一度、ヒントをいただければ幸いです。