R数据帧中的条件减法

Conditional subtraction in R data frame

我有一个相当直接的需求,但我找不到一个足够相似的以前问过的问题。我一直在尝试使用 dplyr,但无法弄清楚。

 julian year
   088   22
   049   19
   041   22
   105   18
   125   22
   245   20

我想要的是对于 data$julian < 105 的每个值,从 data$year 中减去“1”,这样

 julian year
   088   21
   049   18
   041   21
   105   18
   125   22
   245   20

OP 询问在 post 中使用 dplyr。这是 dplyr

library(dplyr)
df1 <- df1 %>%
    mutate(year = case_when(as.numeric(julian) < 105 ~ year -1,
     TRUE ~ as.numeric(year)))

-输出

df1
 julian year
1    088   21
2    049   18
3    041   21
4    105   18
5    125   22
6    245   20

数据

df1 <- structure(list(julian = c("088", "049", "041", "105", "125", 
"245"), year = c(22L, 19L, 22L, 18L, 22L, 20L)), row.names = c(NA, 
-6L), class = "data.frame")

另一个基数为 R 的选项:

df$year[df$julian < 105] <- df$year[df$julian < 105] - 1

输出

  julian year
1    088   21
2    049   18
3    041   21
4    105   18
5    125   22
6    245   20

数据

df <- structure(list(name = c("KKSWAP", "KKSWAP"), code = c("The liquidations code for Marco are: 51-BMR05, 74-VAD08, 176-VNF09.", 
"The liquidations code for Clara are: 88-BMR05, 90-VAD08, 152-VNF09."
)), class = "data.frame", row.names = c(NA, -2L))