根据序列从列中减去值并在新列中创建结果

问题描述 投票:0回答:1

我需要从数据帧列中减去从 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

我想按顺序从 temp 列中减去每一行的值,并生成包含结果的列。 我期望的结果如下: enter image description here

dataframe rstudio multiple-columns calculated-columns
1个回答
0
投票
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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.