2016-03-20 15 views
0

私は確率値を持つ5列のデータフレームを持っています。行の最大値を選択し、列名でタグ付けする方法

5つの列が目標変数値です。目標値を持つ各行の最大確率をタグ付けする1つの追加列が必要です。助けて?例えば

:私が正しくあなたの質問を理解している場合

id columnA columnB columnC columnD FinalTag 
    1112 0.653 0.33 0.01 0.006 "A" 
+0

データフレームの名前は何ですか? –

答えて

2

、これは一つの可能​​性になります。しかし、この結果を得るより簡単な方法があるかもしれません。

df1$FinalTag <- gsub("column", "", names(sapply(1:nrow(df1), 
             function(x) which.max(df1[x,-1])))) 

#  id columnA columnB columnC columnD FinalTag 
# 1 1112 0.653 0.330 0.01 0.006  A 
# 2 1114 0.234 0.581 0.10 0.085  B 

編集

実際にはよりコンパクトな形で得ることができ、同じ結果を@DavidArenburgによって示唆されるように:

df1$FinalTag <- sub("column", "", names(df1)[-1][max.col(df1[-1])]) 

データ

df1 <- structure(list(id = c(1112L, 1114L), columnA = c(0.653, 0.234), 
     columnB = c(0.33, 0.581), columnC = c(0.01, 0.1), 
     columnD = c(0.006, 0.085)), 
     .Names = c("id", "columnA", "columnB", "columnC", "columnD"), 
     class = "data.frame", row.names = c(NA, -2L)) 
+0

@DavidArenburgはい、それは非常によく似ていますが、実際には重複しているかどうかはわかりません...答えに使用されているプログラミング方法は非常に似ていますが、OPの質問は異なるようです。 – RHertel

関連する問題