In dplyr running on R data frames, it is easy to run
df <- df %>%
mutate(income_topcoded = ifelse(income > topcode, income, topcode)
I had a similar problem. The best I could do was to use an in-db operation as you suggest:
topcode <- 10000
queryString <- sprintf("UPDATE db.table SET income_topcoded = %s WHERE income_topcoded > %s",topcode,topcode)
dbGetQuery(con, queryString)
In my case, I was using MySQL with dplyr
, but it wasn't able to translate my ifelse()
into valid SQL.
Based on @hadley's reply on this thread, you can use an SQL-style if()
statement inside mutate()
on dplyr's in-db dataframes:
df <- df %>%
mutate( income_topcoded = if (income > topcode) income else topcode)
As far as using grepl()
goes...well, you can't. But you can use the SQL like
operator:
df <- df %>%
filter( topcode %like% "ABC%" )