gpt4 book ai didi

R:使用绝对值比较值但打印有符号值

转载 作者:行者123 更新时间:2023-12-04 08:36:28 24 4
gpt4 key购买 nike

我有一个如下所示的数据框:

ID    val1    val2    val3
A07 -0.01 -0.03 0.01
A08 0.05 -0.07 0.02
B01 0.02 0.03 -0.01
对于每一行,我想确定 val1、val2 和 val3 列中的最大绝对值。然后我想将最大绝对值的有符号值(例如原始格式的整数)打印到新列。结果如下所示:
ID    val1    val2    val3    val.new
A07 -0.01 -0.03 0.01 -0.03
A08 0.05 -0.07 0.02 -0.07
B01 0.04 0.02 -0.01 0.04
我目前正在使用 apply 来确定所需列中每一行的最大绝对值并打印到新列,如下所示:
df[,"val.new"] = apply(abs(df[,2:4]), 1, max)
但这当然返回最大绝对值,没有符号:
ID    val1    val2    val3    val.new
A07 -0.01 -0.03 0.01 0.03
A08 0.05 -0.07 0.02 0.07
B01 0.04 0.02 -0.01 0.04
我不知道如何返回用于标识最大值的有符号值。我该如何解决?
谢谢!

最佳答案

你可以做:

df$val.new <- apply(df[-1], 1, function(x) x[which.max(abs(x))])

df
#> ID val1 val2 val3 val.new
#> 1 A07 -0.01 -0.03 0.01 -0.03
#> 2 A08 0.05 -0.07 0.02 -0.07
#> 3 B01 0.02 0.03 -0.01 0.03

使用的数据
df <- structure(list(ID = structure(1:3, .Label = c("A07", "A08", "B01"
), class = "factor"), val1 = c(-0.01, 0.05, 0.02), val2 = c(-0.03,
-0.07, 0.03), val3 = c(0.01, 0.02, -0.01)), row.names = c(NA,
-3L), class = "data.frame")

df
#> ID val1 val2 val3
#> 1 A07 -0.01 -0.03 0.01
#> 2 A08 0.05 -0.07 0.02
#> 3 B01 0.02 0.03 -0.01

关于R:使用绝对值比较值但打印有符号值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64774187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com