言うの一方がデータフレームを有する:データフレーム条件複数の行
data <- data.frame('obs' = c('a','c','b'), 'top1' = c('a','b','c'), 'top2' = c('b', 'c', 'f'), 'top3' = c('g', 'h', 'd'))
Iは、以下の方法で動作する条件である新しい列topn
を計算するために、WAN:obs
の値である場合top
列のいずれかがtopn
になるようにする必要があります。そうでない場合はtopn
に任意の値、たとえばtop1
を割り当てることができます。もちろん、私はor
とifelse
でこれを行うことができますが、私はテーブルに最大10個のtop
の列を持つことができるので、それを書くためのより短い方法を探しています。
obs top1 top2 top3 topn
a a b g a
c b c h c
b c f d c
OBSは、最初の列であり、他のすべてが 'トップ' 'データであれば、これは良いかもしれません$ topn = data [cbind(1:nrow(data) 、%x [-1]))))])] 'に1を加えて(data、1、function(x)1 +! –