我需要从数据帧列中减去从 0 到 20 的一系列值。 在下面的示例中,我有每日温度,我需要创建一系列带有减法的列。
temp <- c(26,27,28,30,32,27,28,29)
date <- as.Date(c('02-15-2021', '02-16-2021', '02-17-2021', '02-18-2021', '02-19-2021', '02-20-2021', '02-21-2021',
'02-22-2021'), "%m-%d-%Y")
A <- data.frame(date, temp)
head(A)
B = seq(0.5,20,0.5)
A$temp - B #I tried it
df <- data.frame(
data = as.Date(c('02-15-2021', '02-16-2021', '02-17-2021', '02-18-2021', '02-19-2021', '02-20-2021', '02-21-2021',
'02-22-2021'), "%m-%d-%Y"),
temp = c(26,27,28,30,32,27,28,29))
library(purrr)
library(dplyr)
diffs <- seq(0.5,20,0.5)
temp_cols <- diffs |>
map(\(x) df$temp - x)
names(temp_cols) <- paste0("temp",diffs)
bind_cols(df, temp_cols |> bind_cols())
#> data temp temp0.5 temp1 temp1.5 temp2 temp2.5 temp3 temp3.5 temp4
#> 1 2021-02-15 26 25.5 25 24.5 24 23.5 23 22.5 22
#> 2 2021-02-16 27 26.5 26 25.5 25 24.5 24 23.5 23
#> 3 2021-02-17 28 27.5 27 26.5 26 25.5 25 24.5 24
#> 4 2021-02-18 30 29.5 29 28.5 28 27.5 27 26.5 26
#> 5 2021-02-19 32 31.5 31 30.5 30 29.5 29 28.5 28
#> 6 2021-02-20 27 26.5 26 25.5 25 24.5 24 23.5 23
#> 7 2021-02-21 28 27.5 27 26.5 26 25.5 25 24.5 24
#> 8 2021-02-22 29 28.5 28 27.5 27 26.5 26 25.5 25
创建于 2024-06-03,使用 reprex v2.1.0