私は確率値を持つ5列のデータフレームを持っています。行の最大値を選択し、列名でタグ付けする方法
5つの列が目標変数値です。目標値を持つ各行の最大確率をタグ付けする1つの追加列が必要です。助けて?例えば
:私が正しくあなたの質問を理解している場合
id columnA columnB columnC columnD FinalTag
1112 0.653 0.33 0.01 0.006 "A"
私は確率値を持つ5列のデータフレームを持っています。行の最大値を選択し、列名でタグ付けする方法
5つの列が目標変数値です。目標値を持つ各行の最大確率をタグ付けする1つの追加列が必要です。助けて?例えば
:私が正しくあなたの質問を理解している場合
id columnA columnB columnC columnD FinalTag
1112 0.653 0.33 0.01 0.006 "A"
、これは一つの可能性になります。しかし、この結果を得るより簡単な方法があるかもしれません。
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))
@DavidArenburgはい、それは非常によく似ていますが、実際には重複しているかどうかはわかりません...答えに使用されているプログラミング方法は非常に似ていますが、OPの質問は異なるようです。 – RHertel
データフレームの名前は何ですか? –