forked from gmanova/excel2R
-
Notifications
You must be signed in to change notification settings - Fork 0
/
nested ifs in R.R
47 lines (30 loc) · 1.48 KB
/
nested ifs in R.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# pre-session options
rm(list = ls())
#getwd()
#setwd("C:\\Users\\User\\Documents")
#load Packages and data sets
if (!require(dplyr)) install.packages('dplyr')
library(dplyr)
campaigns <- read.csv("https://www.dropbox.com/s/gv83asx8qeuog0z/google%20campaigns.csv?dl=1")
write.csv(campaigns, "campaigns.csv")
# let's create a 4 level bin for the campaign spend, based
# on the cost:
campaigns$size <- ifelse(campaigns$Cost <=1000, "small",
ifelse(campaigns$Cost<=5000, "medium",
ifelse(campaigns$Cost<=10000, "large",
"reallyhuge!")))
# lets see how this can look with dplyr
campaigns$size = NULL #delete the column and redo
campaigns <- campaigns %>%
mutate(size = ifelse(campaigns$Cost <=1000, "small",
ifelse(campaigns$Cost<=5000, "medium",
ifelse(campaigns$Cost<=10000, "large",
"reallyhuge!"))))
# BUT, there is a cooler way to do it in dplyr. dplyr is built with more than a little
# sql logic to it, and it has a built in case statement sytax to simplify nested ifs:
campaigns$size = NULL #delete the column and redo
campaigns <- campaigns %>%
mutate(size = case_when(Cost<=1000 ~ "small",
Cost<=5000 ~ "medium",
Cost<=10000 ~"large",
Cost>10000 ~ "reallyhuge!"))