gpt4 book ai didi

r - 根据条件使用来自另一个向量的值更改列中的值

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

想象一下我有这个 df。

library(dplyr)
library(scales)
df <- data.frame("item" = 1:10, "quantity" = c(21,15,12,14,26,12,13,15,24,26), "value" = c(90,110,105,102,86,112,75,84,34,99))

理想情况下,我希望将值最大值设为 100。因此,我想选取任何值高于 95 的项目,然后将它们按 1:5 的比例缩放。然后我想在 95 之上添加该缩放值以获得 95 到 100 之间的值。这是我目前拥有的:

x <- df[df$value >= 95,]
x <- x$value
x <- rescale(x, to = c(0,5))
x # [1] 4.23, 2.31, 1.15, 5.00, 0.00
df <- df %>% mutate(value = ifelse(value >= 95, 95 + x, value))

如您所想,这为我提供了 95+x[1] 所有大于 95 的值。我想我需要一个 for 循环,但不太清楚如何构造它。谢谢。

期望的输出是:

Item Quantity Value
1 21 90
2 15 99.23
3 12 97.31
4 14 96.15
5 26 86
6 12 100
7 13 75
8 15 84
9 24 34
10 26 95

最佳答案

我不确定这是否是您要找的,但是使用 dplyr 和 scales 包:

df %>% 
mutate(Value = ifelse(Value >= 95, 95 + scales::rescale(Value, to = c(1, 5)), Value))

编辑:

df %>% 
filter(Value >= 95) %>%
mutate(Value = 95 + scales::rescale(Value, to = c(0, 5))) %>%
bind_rows(filter(df, Value < 95)) %>%
arrange(Item)

关于r - 根据条件使用来自另一个向量的值更改列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56569818/

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