【发布时间】:2017-08-09 19:39:34
【问题描述】:
我有以下数据框:
mydf <- data.frame(label = c("A", "B", "C"),
Var1 = c(0.07635660, 0.22186266, -0.13299621),
Var2 = c(0.25517996, 0.65896751, 0.32703359),
Var3 = c(0.63174426, 0.21518955, 0.47102852))
对于每一行,我想添加一个新变量,该变量将返回它具有最大值的变量的名称:
mydf_end_goal <- data.frame(label = c("A", "B", "C"),
Var1 = c(0.07635660, 0.22186266, -0.13299621),
Var2 = c(0.25517996, 0.65896751, 0.32703359),
Var3 = c(0.63174426, 0.21518955, 0.47102852),
Max = c("Var3", "Var2", "Var3"))
最有效的方法是什么,最好使用dplyr 或purrr?现在,我能想到的最好的就是一系列ifelse 条件,这真的很烦人,因为我的变量比我上面的玩具示例中的要多:
mydf %>%
rowwise() %>%
mutate(Max = ifelse(Var1 > Var2 & Var1 > Var3, "Var1",
ifelse(Var2 > Var1 & Var2 > Var3, "Var2", "Var3")))
【问题讨论】: