我有一个5列数据框,带有概率值。
5列是目标变量值我想要一个额外的列,用于标记每行具有目标值的最大概率。救命?
例如:
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))