【发布时间】:2019-10-27 10:01:20
【问题描述】:
想象一下我有这个 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
【问题讨论】:
-
谢谢@N。威廉姆斯和@H 1,出于某种原因,我仍在进行统一更改。我确定这是我的问题,与您的回答无关,再次感谢。
标签: r dataframe dplyr data-manipulation