2016-07-22 3 views
1

の値を取得する:Rのdata.table:私はこの1つにdata.table同様のを持ってNAされていない列をチェックして、このコラム

 gnr konf_prot konf_kath  konf_andere konf_ohne 
    1: 1136  NA #F16913   NA   NA 
    2: 1150  NA #F16913   NA   NA 
    3: 2890 #9E9AC8  NA   NA   NA 
    4: 4401  NA #FEE6CE   NA   NA 
    5: 2427  NA  NA   #FD8D3C  NA 

をそれは、ID列(GNR)といくつかの列を持っていますカラーコードを含んでいます。各行では、1つの列のみが色の値を持ち、他のすべてがNAです。

私が欲しいのは、ちょうど2列の新しいデータテーブルです:gnrcolorcodeです。カラーコードには、この行内の他の列のいずれかに表示される色の値が含まれます。 したがって、どの列がNAでないかをチェックし、この色の値を新しい列のカラーコードに割り当てる関数が必要です。

ありがとうございました!

答えて

2

meltを使用すると、「ロング」形式に変換できます。ここでは、 "gnr"をuniqueと仮定していますが、OPには既に1つの非NA要素があることが記述されています。このアプローチでは、2つの列を持つ新しいデータセットが得られます。

melt(setDT(dt), id.var = "gnr", na.rm = TRUE, value.name = "colorVal")[, 
        variable:= NULL][] 

base Rアプローチはクールmax.col

setDF(dt) 
data.frame(dt[1], ColorVal =dt[-1][cbind(1:nrow(dt), max.col(!is.na(dt[-1]), "first"))]) 
+1

を使用されるだろう、これは本当によく働く、どうもありがとう! – Mario

関連する問題