我有一个包含两列数值的数据框。我想调整值的范围,同时保持数值之间的相对距离。这个例子更好地解释了这一点。
是否有一个标准函数可以完成此任务?
df <- data.frame(
Name = c("A", "B", "C", "D", "E"),
Start = c(175000, 183597, 185317, 188307, 191390),
Stop = c(182548, 184724, 187841, 188599, 192650)
)
Range_Start <- df$Start[df$Name=="C"] - 10000
Range_Stop <- df$Stop[df$Name=="C"] + 10000
Range_Start2 <- 1
Range_Stop2 <- length(Range_Start:Range_Stop)
df2 <- df %>%
rowwise() %>%
dplyr::mutate(Start2 = Start - Range_Start) %>%
dplyr::mutate(Stop2 = Stop - Range_Start)
期望值:
> df2$Start2
[1] -317 8280 10000 12990 16073
> df2$Stop2
[1] 7231 9407 12524 13282 17333
无需前往
rowwise
:使用更新的数据重新运行:
要对多个列执行相同的操作(在本例中减去固定数量),我们可以使用
across
insidemutate