#Data
revenue <- c(14574.49, 7606.46, 8611.41, 9175.41, 8058.65, 8105.44, 11496.28, 9766.09, 10305.32, 14379.96, 10713.97, 15433.50)
expenses <- c(12051.82, 5695.07, 12319.20, 12089.72, 8658.57, 840.20, 3285.73, 5821.12, 6976.93, 16618.61, 10054.37, 3803.96)
#Solution
#profit for each month
profit <- revenue- expenses
profit
[1] 2522.67 1911.39 -3707.79 -2914.31 -599.92 7265.24 8210.55 3944.97 3328.39 -2238.65 659.60
[12] 11629.54
#profit after tax for each month (the tax rate is 30%)
tax <- round(profit * 0.3, digits = 2)
tax
[1] 756.80 573.42 -1112.34 -874.29 -179.98 2179.57 2463.17 1183.49 998.52 -671.60 197.88
[12] 3488.86
profit.after.tax <- profit - tax
profit.after.tax
[1] 1765.87 1337.97 -2595.45 -2040.02 -419.94 5085.67 5747.38 2761.48 2329.87 -1567.05 461.72
[12] 8140.68
#profit margin for each month - equals to profit after tax divided by revenue
profit.margin <- round(profit.after.tax / revenue,2) * 100
profit.margin
[1] 12 18 -30 -22 -5 63 50 28 23 -11 4 53
#good months- where the profits after tax was greter than the mean for the year
mean_pat <- mean(profit.after.tax)
mean_pat
[1] 1750.682
good.months <- profit.after.tax > mean_pat
good.months
[1] TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE FALSE TRUE
#bad months- where the profits after tax was less sthan the mean for the year
bad.months <- !good.months
bad.months
[1] FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
#the best month- where the profits after tax was max for the year
best.month <- profit.after.tax == max(profit.after.tax)
best.month
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
#the worst month- where the profit after tax was min for the year
worst.month <- profit.after.tax == min(profit.after.tax)
worst.month
[1] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#units of thousands
revenue.1000 <- round(revenue/1000)
expenses.1000 <- round(expenses/1000)
profit.1000 <- round(profit/1000)
profit.after.tax.1000 <- round(profit.after.tax/1000)
#output
revenue.1000
[1] 15 8 9 9 8 8 11 10 10 14 11 15
expenses.1000
[1] 12 6 12 12 9 1 3 6 7 17 10 4
profit.1000
[1] 3 2 -4 -3 -1 7 8 4 3 -2 1 12
profit.after.tax.1000
[1] 2 1 -3 -2 0 5 6 3 2 -2 0 8
profit.margin
[1] 12 18 -30 -22 -5 63 50 28 23 -11 4 53
good.months
[1] TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE FALSE TRUE
bad.months
[1] FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
best.month
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
worst.month
[1] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#matrices
m <- rbind(
revenue.1000,
expenses.1000,
profit.1000,
profit.after.tax.1000,
profit.margin,
good.months,
bad.months,
best.month,
worst.month
)
m
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
revenue.1000 15 8 9 9 8 8 11 10 10 14 11 15
expenses.1000 12 6 12 12 9 1 3 6 7 17 10 4
profit.1000 3 2 -4 -3 -1 7 8 4 3 -2 1 12
profit.after.tax.1000 2 1 -3 -2 0 5 6 3 2 -2 0 8
profit.margin 12 18 -30 -22 -5 63 50 28 23 -11 4 53
good.months 1 0 0 0 0 1 1 1 1 0 0 1
bad.months 0 1 1 1 1 0 0 0 0 1 1 0
best.month 0 0 0 0 0 0 0 0 0 0 0 1
worst.month 0 0 1 0 0 0 0 0 0 0 0 0
LS0tCnRpdGxlOiAiRmluYW5jaWFsIFN0YXRlbWVudCBBbmFseXNpcyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgpgYGB7cn0KI0RhdGEKcmV2ZW51ZSA8LSBjKDE0NTc0LjQ5LCA3NjA2LjQ2LCA4NjExLjQxLCA5MTc1LjQxLCA4MDU4LjY1LCA4MTA1LjQ0LCAxMTQ5Ni4yOCwgOTc2Ni4wOSwgMTAzMDUuMzIsIDE0Mzc5Ljk2LCAxMDcxMy45NywgMTU0MzMuNTApCmV4cGVuc2VzIDwtIGMoMTIwNTEuODIsIDU2OTUuMDcsIDEyMzE5LjIwLCAxMjA4OS43MiwgODY1OC41NywgODQwLjIwLCAzMjg1LjczLCA1ODIxLjEyLCA2OTc2LjkzLCAxNjYxOC42MSwgMTAwNTQuMzcsIDM4MDMuOTYpCgojU29sdXRpb24KCiNwcm9maXQgZm9yIGVhY2ggbW9udGgKcHJvZml0IDwtIHJldmVudWUtIGV4cGVuc2VzCnByb2ZpdAoKI3Byb2ZpdCBhZnRlciB0YXggZm9yIGVhY2ggbW9udGggKHRoZSB0YXggcmF0ZSBpcyAzMCUpCnRheCA8LSByb3VuZChwcm9maXQgKiAwLjMsIGRpZ2l0cyA9IDIpCnRheAoKcHJvZml0LmFmdGVyLnRheCA8LSBwcm9maXQgLSB0YXgKcHJvZml0LmFmdGVyLnRheAoKI3Byb2ZpdCBtYXJnaW4gZm9yIGVhY2ggbW9udGggLSBlcXVhbHMgdG8gcHJvZml0IGFmdGVyIHRheCBkaXZpZGVkIGJ5IHJldmVudWUKcHJvZml0Lm1hcmdpbiA8LSByb3VuZChwcm9maXQuYWZ0ZXIudGF4IC8gcmV2ZW51ZSwyKSAqIDEwMApwcm9maXQubWFyZ2luCgojZ29vZCBtb250aHMtIHdoZXJlIHRoZSBwcm9maXRzIGFmdGVyIHRheCB3YXMgZ3JldGVyIHRoYW4gdGhlIG1lYW4gZm9yIHRoZSB5ZWFyCm1lYW5fcGF0IDwtIG1lYW4ocHJvZml0LmFmdGVyLnRheCkKbWVhbl9wYXQKZ29vZC5tb250aHMgPC0gcHJvZml0LmFmdGVyLnRheCA+IG1lYW5fcGF0Cmdvb2QubW9udGhzCgojYmFkIG1vbnRocy0gd2hlcmUgdGhlIHByb2ZpdHMgYWZ0ZXIgdGF4IHdhcyBsZXNzIHN0aGFuIHRoZSBtZWFuIGZvciB0aGUgeWVhcgpiYWQubW9udGhzIDwtICFnb29kLm1vbnRocwpiYWQubW9udGhzCgojdGhlIGJlc3QgbW9udGgtIHdoZXJlIHRoZSBwcm9maXRzIGFmdGVyIHRheCB3YXMgbWF4IGZvciB0aGUgeWVhcgpiZXN0Lm1vbnRoIDwtIHByb2ZpdC5hZnRlci50YXggPT0gbWF4KHByb2ZpdC5hZnRlci50YXgpCmJlc3QubW9udGgKCiN0aGUgd29yc3QgbW9udGgtIHdoZXJlIHRoZSBwcm9maXQgYWZ0ZXIgdGF4IHdhcyBtaW4gZm9yIHRoZSB5ZWFyCndvcnN0Lm1vbnRoIDwtIHByb2ZpdC5hZnRlci50YXggPT0gbWluKHByb2ZpdC5hZnRlci50YXgpCndvcnN0Lm1vbnRoCgojdW5pdHMgb2YgdGhvdXNhbmRzCnJldmVudWUuMTAwMCA8LSByb3VuZChyZXZlbnVlLzEwMDApCmV4cGVuc2VzLjEwMDAgPC0gcm91bmQoZXhwZW5zZXMvMTAwMCkKcHJvZml0LjEwMDAgPC0gcm91bmQocHJvZml0LzEwMDApCnByb2ZpdC5hZnRlci50YXguMTAwMCA8LSByb3VuZChwcm9maXQuYWZ0ZXIudGF4LzEwMDApCgoKI291dHB1dApyZXZlbnVlLjEwMDAKZXhwZW5zZXMuMTAwMApwcm9maXQuMTAwMApwcm9maXQuYWZ0ZXIudGF4LjEwMDAKcHJvZml0Lm1hcmdpbgpnb29kLm1vbnRocwpiYWQubW9udGhzCmJlc3QubW9udGgKd29yc3QubW9udGgKCiNtYXRyaWNlcwptIDwtIHJiaW5kKAogIHJldmVudWUuMTAwMCwKICBleHBlbnNlcy4xMDAwLAogIHByb2ZpdC4xMDAwLAogIHByb2ZpdC5hZnRlci50YXguMTAwMCwKICBwcm9maXQubWFyZ2luLAogIGdvb2QubW9udGhzLAogIGJhZC5tb250aHMsCiAgYmVzdC5tb250aCwKICB3b3JzdC5tb250aAopCm0KYGBgCgoK