I have this dataframe:
source_data <- data.frame(
"date" = c("2018-01-01", "2018-01-01", "2018-02-01", "2018-02-01"),
"nr" = c(0, 1, 0, 1),
"marketing_fees" = c(500, 600, 800, 900),
"services_paid" = c(40, 50, 10, 30),
stringsAsFactors = F)
Result should look like this
result <- data.frame(
"date" = c("2018-01-01", "2018-01-01", "2018-01-01", "2018-01-01", "2018-02-01", "2018-02-01", "2018-02-01", "2018-02-01"),
"nr" = c(0, 0, 1, 1, 0, 0, 1, 1),
"income" = c(500, 40, 600, 50, 800, 10, 900, 30),
"source" = c("marketing", "services", "marketing", "services", "marketing", "services", "marketing", "services"),
stringsAsFactors = F)
Only way how can I do is this
result <- rbind(
source_data %>%
filter(date == "2018-01-01") %>%
select(date, nr, income = marketing_fees) %>%
mutate(source = "marketing"),
source_data %>%
filter(date == "2018-01-01") %>%
select(date, nr, income = services_paid) %>%
mutate(source = "services"),
source_data %>%
filter(date == "2018-02-01") %>%
select(date, nr, income = marketing_fees) %>%
mutate(source = "marketing"),
source_data %>%
filter(date == "2018-02-01") %>%
select(date, nr, income = services_paid) %>%
mutate(source = "services")
)
Code above is not just ugly with lot of repeated parts, I can't use it anymore this way sice my dataframe has about 50 columns and lot of dataes. How would you achieve result dataframe without so much repeated codes?