'Conditional subtraction in R data frame

I have a fairly straightforward need, but I can't find a previously asked question that is similar enough. I've been trying with dplyr, but can't figure it out.

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

What I want is for each value where data$julian < 105, subtract '1' from data$year, so that

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


Solution 1:[1]

OP asked about using dplyr in the post. Here, is one with dplyr

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

-output

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

data

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")

Solution 2:[2]

Another option with base R:

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

Output

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

Data

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))

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 AndrewGB