The following is method c ifelse, a subset of and which:
df$Code[which(df$Code=="value")] <-
ifelse(df$Code[which(df$Code=="value") - 1] == "$", "reward", "no_reward")
Or perhaps a faster method that doesn't use ifelse:
df$Code[which(df$Code=="value")] <-
c("reward", "no_reward")[(df$Code[which(df$Code=="value") - 1] == "$") + 1]
Both return
df
Event Code
1 Picture no$
2 Picture no_reward
3 Picture $
4 Picture reward
5 Picture no$
6 Picture no_reward
7 Picture no$
8 Picture no_reward
9 Picture $
10 Picture reward
<strong> data
df <- read.table(header=T, text="Event Code
Picture no$
Picture value
Picture $
Picture value
Picture no$
Picture value
Picture no$
Picture value
Picture $
Picture value", as.is=T)