About this project.

This project aims to take a look at the logs created by the guild CGU in order to check on the players’ progress over time. The players’ damage done and damage taken while raiding is under the scope. 

Tidying the data.

Characters.

Only members of the CGU’s roster will be included in the analysis. That will be all characters belonging to:
1. Bertoldo.9627
2. Megakapers.2537
3. MutantFod.5602
4. Wanderer.6905
5. Frusco.1830
6. fmshadowstep.6195
7. woltos.8735
8. Deoceus.6175
9. liquidus.9543
10. panranadox.6390
11. Flemming.6245
12. Leeal.7021
13. Melkor Manson.8320
14. WulfiKant.7364

#excluding "pugs"
ffdc<- ffd %>%
  filter(Account %in% c("Bertoldo.9627", "Megakapers.2537", "MutantFod.5602", "Wanderer.6905", "Frusco.1830", "fmshadowstep.6195", "woltos.8735", "Deoceus.6175", "liquidus.9543", "panranadox.6390", "Flemming.6245", "Leeal.7021", "Melkor Manson.8320", "WulfiKant.7364"))

ffdc %>%
  group_by(Account, Name) %>%
  summarise(encounters_participated=n()) %>%
  arrange(desc(encounters_participated))
## # A tibble: 36 x 3
## # Groups:   Account [14]
##    Account           Name                encounters_participated
##    <chr>             <chr>                                 <int>
##  1 MutantFod.5602    "Detaz Na\xeflo"                        129
##  2 Wanderer.6905     Idogi                                   121
##  3 Megakapers.2537   Liazz The Provoker                      118
##  4 fmshadowstep.6195 Afkshadowstep                           101
##  5 Deoceus.6175      Deontiks                                 96
##  6 Bertoldo.9627     Petra Harkin                             81
##  7 Frusco.1830       Idhion                                   77
##  8 liquidus.9543     His Majesty Elderon                      76
##  9 woltos.8735       "Brynhild\xeb"                           70
## 10 panranadox.6390   I Nicki Mirage I                         44
## # ... with 26 more rows

Kills over 60 secs.

As a rule of thumb, a fight needs to be over 60 seconds long in order for it’s log to be accurately representing a players potential. This is done, because in the first few seconds of a figth all conditions are ideal. Therefore if a log ends during this time and its results are then compared with those of logs whose fights are longer than 60 seconds, would make the rest of the logs appear to be worse. Hence all encouters whose duration is less than 60 seconds will be excluded. Also, failed attempts aren’t needed in the analysis, and will be excluded as well.

#turning duration to only seconds
#separate mins and secs
ffdc_d <- ffdc %>%
  separate(Duration, c( "mins", "secs"), sep=" ", remove=TRUE)

#remove m & s
ffdc_d$mins <- ffdc_d$mins %>%
  str_replace("m", "")
ffdc_d$secs <- ffdc_d$secs %>%
  str_replace("s", "")

#creating new column with duration calculated in secs
ffdc_d <- ffdc_d %>%
  mutate(mins_to_secs=as.numeric(as.character(mins))*60, duration_in_secs= mins_to_secs + as.numeric(as.character(secs)))

#filtering rows
kills_over60s <- ffdc_d %>%
  filter(duration_in_secs>60, Success == "True")

Transforming variables and observations.

In order for the data to be manipulated some changes need to be made:
1. The names of the variables contain spaces which will be replaces by “_“.
2. The variable”Name" contains some observations written with characters from foreign languages, which will be replaced as well.
3. The “Time_Start” variable will be made into 3 variables “Date”, “Time” and “UTC”.

#replacing " " with "_"
names(kills_over60s) <- gsub(" ", "_", names(kills_over60s))

#replacing special characters
ko60 <- kills_over60s
ko60$Name<-str_replace_all(ko60$Name, "[^[:alnum:]]", "_")

#changing "Time_start" from character into a date format
ko60d <- ko60 %>%
  separate(Time_Start, c( "Date", "Time", "UTC"), sep=" ", remove=TRUE)
ko60d$Date <- as.Date(ko60d$Date, tryFormats = c("%Y-%m-%d", "%Y/%m/%d"))

Exploring DPS and Damage Taken.

Overview of total.

As we can see below there is fluctuation on the guilds damage done in most boss kills. 

#all dps per boss per date
ko60t<- ko60d %>%
  group_by(Boss, Date) %>%
  mutate(total_dps_pbd=sum(All_DPS)) 

ggplot(ko60t, aes(Date, total_dps_pbd)) +
  geom_point() +
  facet_wrap(~Boss) + 
  theme(axis.text.x = element_text(angle = 90)) 

ko60t %>%
  group_by(Account) %>%
  summarise(resurrected=sum(Resurrects)) %>%
  arrange(desc(resurrected))
## # A tibble: 14 x 2
##    Account            resurrected
##    <chr>                    <dbl>
##  1 Megakapers.2537            259
##  2 woltos.8735                236
##  3 Melkor Manson.8320          96
##  4 Wanderer.6905               77
##  5 MutantFod.5602              62
##  6 liquidus.9543               52
##  7 fmshadowstep.6195           51
##  8 Bertoldo.9627               45
##  9 Deoceus.6175                43
## 10 Flemming.6245               41
## 11 panranadox.6390             28
## 12 Frusco.1830                 18
## 13 Leeal.7021                   3
## 14 WulfiKant.7364               1

A closer look to every Boss

From this point on, summary statistcs along with graphs are given for each boss. As the role(tank/healer/dps) of the player during the raid is not always the same, some sudden peaks are to be expected. Hence, except for damage done/taken it is also interesting to see the players’ boxplots and keep an eye out for potential outliers. 

Cairn the Indomitable

ko60cairn<- ko60d %>%
  filter(Boss =="Cairn the Indomitable") %>%
  group_by(Name) %>%
  mutate(encounters=n())  %>%
  filter(encounters>=2)

ko60cairn %>%
  filter(Boss =="Cairn the Indomitable") %>%
  group_by(Name) %>%
  summarise(encounters=n(), median_dps=median(All_DPS), mean_dps=mean(All_DPS), sd_dps=sd(All_DPS))  %>%
  arrange(desc(encounters))
## # A tibble: 14 x 5
##    Name                encounters median_dps mean_dps sd_dps
##    <chr>                    <int>      <dbl>    <dbl>  <dbl>
##  1 Detaz_Na_lo                  8      1708.    5861.  8302.
##  2 Idogi                        7     10557     9082.  3990.
##  3 Afkshadowstep                6     16291    15139.  5074.
##  4 His_Majesty_Elderon          6      9144.    7679.  3736.
##  5 Liazz_The_Provoker           6      1180.    1275    474.
##  6 Petra_Harkin                 6      3078     2796   1039.
##  7 Brynh_ld_                    5      2282     2510.   392.
##  8 Cnarr_Fizzleblip             5      5334     5944.  1692.
##  9 Sinthoras_Lecter             5     24908    22663.  4984.
## 10 Idhion                       3     13537    11039.  4326.
## 11 Anityr_Svoldjann             2      4068.    4068.   981.
## 12 Deontiks                     2      3026.    3026.   986.
## 13 Veanna_Remi                  2     15582    15582   2014.
## 14 Wulfiekant                   2      8912.    8912. 12603.
ggplot(ko60cairn, aes(Date)) +
  geom_line(aes(y=All_DMG, color="All_DMG")) +
  geom_line(aes(y=DMG_Taken, color="DMG_Taken")) +
  labs(color="Damage") +
  scale_colour_manual(values=c(All_DMG="green",DMG_Taken="red"))+
  facet_wrap(~Name, nrow = 2) + 
  theme(axis.text.x = element_text(angle = 90))  

ggplot(ko60cairn, aes(Name, All_DPS, col=Account)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 90)) 


Gorseval the Multifarious

ko60gor<- ko60d %>%
  filter(Boss =="Gorseval the Multifarious") %>%
  group_by(Name) %>%
  mutate(encounters=n())  %>%
  filter(encounters>=2)

ko60gor %>%
  filter(Boss =="Gorseval the Multifarious") %>%
  group_by(Name) %>%
  summarise(encounters=n(), median_dps=median(All_DPS), mean_dps=mean(All_DPS), sd_dps=sd(All_DPS))  %>%
  arrange(desc(encounters))
## # A tibble: 18 x 5
##    Name                encounters median_dps mean_dps sd_dps
##    <chr>                    <int>      <dbl>    <dbl>  <dbl>
##  1 Detaz_Na_lo                 10      1724.    1901.   439.
##  2 Afkshadowstep                9     16550    16182.  2882.
##  3 Idogi                        9      8902    10121.  2782.
##  4 Liazz_The_Provoker           9      1659     1874.   531.
##  5 Deontiks                     6      4210.    4057.   617.
##  6 Petra_Harkin                 6      6204.    8556.  4531.
##  7 Brynhild_                    5      5001     5119    198.
##  8 Cael_Remi                    5     12603    12695.   187.
##  9 His_Majesty_Elderon          5     10508    10183.  1998.
## 10 Cnarr_Fizzleblip             4     13738.   13764.  4218.
## 11 Brynh_ld_                    3      6028     6092.   478.
## 12 Kettlet                      3     10113    10413.   520.
## 13 Nickarsus                    3     11465    12761.  2245.
## 14 I_Nicki_Mirage_I             2      5466     5466      0 
## 15 Idhion                       2     18422.   18422.  1894.
## 16 Imperator_Elderon            2      9519     9519      0 
## 17 Ramsay_Lannister             2     23620    23620   5011.
## 18 Veanna_Remi                  2     21458    21458    959.
ggplot(ko60gor, aes(Date)) +
  geom_line(aes(y=All_DMG, color="All_DMG")) +
  geom_line(aes(y=DMG_Taken, color="DMG_Taken")) +
  labs(color="Damage") +
  scale_colour_manual(values=c(All_DMG="green",DMG_Taken="red"))+
  facet_wrap(~Name, nrow = 2) + 
  scale_y_continuous(labels = scales::comma) +
  theme(axis.text.x = element_text(angle = 90)) 

ggplot(ko60gor, aes(Name, All_DPS, col=Account)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 90)) 


Keep Construct

ko60kc<- ko60d %>%
  filter(Boss =="Keep Construct") %>%
  group_by(Name) %>%
  mutate(encounters=n())  %>%
  filter(encounters>=2)

ko60kc %>%
  filter(Boss =="Keep Construct") %>%
  group_by(Name) %>%
  summarise(encounters=n(), median_dps=median(All_DPS), mean_dps=mean(All_DPS), sd_dps=sd(All_DPS))  %>%
  arrange(desc(encounters))
## # A tibble: 8 x 5
##   Name                encounters median_dps mean_dps sd_dps
##   <chr>                    <int>      <dbl>    <dbl>  <dbl>
## 1 Afkshadowstep                2     22368.   22368.  325. 
## 2 Brynh_ld_                    2      4060     4060    67.9
## 3 Cnarr_Fizzleblip             2     17124.   17124.  397. 
## 4 Detaz_Na_lo                  2      1992.    1992.  231. 
## 5 His_Majesty_Elderon          2      6666.    6666.  153. 
## 6 Idogi                        2     16338    16338  2855. 
## 7 Liazz_The_Provoker           2      2126.    2126.  325. 
## 8 Petra_Harkin                 2      4664     4664   741.
ggplot(ko60kc, aes(Date)) +
  geom_line(aes(y=All_DMG, color="All_DMG")) +
  geom_line(aes(y=DMG_Taken, color="DMG_Taken")) +
  labs(color="Damage") +
  scale_colour_manual(values=c(All_DMG="green",DMG_Taken="red"))+
  facet_wrap(~Name, nrow = 2) + 
  theme(axis.text.x = element_text(angle = 90))  

ggplot(ko60kc, aes(Name, All_DPS, col=Account)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 90)) 


Mursaat Overseer

ko60mo<- ko60d %>%
  filter(Boss =="Mursaat Overseer") %>%
  group_by(Name) %>%
  mutate(encounters=n())  %>%
  filter(encounters>=2)

ko60mo %>%
  filter(Boss =="Mursaat Overseer") %>%
  group_by(Name) %>%
  summarise(encounters=n(), median_dps=median(All_DPS), mean_dps=mean(All_DPS), sd_dps=sd(All_DPS))  %>%
  arrange(desc(encounters))
## # A tibble: 12 x 5
##    Name                encounters median_dps mean_dps sd_dps
##    <chr>                    <int>      <dbl>    <dbl>  <dbl>
##  1 Detaz_Na_lo                  6      2422.    2311.   428.
##  2 Idogi                        6     20040.   19385.  4180.
##  3 Afkshadowstep                5     28129    26752.  4047.
##  4 Liazz_The_Provoker           5      2042     2200    464.
##  5 Brynh_ld_                    4      7670.    7274.  1305.
##  6 Cnarr_Fizzleblip             4     16392    15785   3486.
##  7 Ealendril_The_Dark           4     25344.   24816.  2170.
##  8 His_Majesty_Elderon          4     16602.   16698.   630.
##  9 Petra_Harkin                 4      6836     6852.   304.
## 10 Deontiks                     2      3501     3501   2633.
## 11 Idhion                       2     24690.   24690.  1917.
## 12 Veanna_Remi                  2     26188.   26188.  5815.
ggplot(ko60mo, aes(Date)) +
  geom_line(aes(y=All_DMG, color="All_DMG")) +
  geom_line(aes(y=DMG_Taken, color="DMG_Taken")) +
  labs(color="Damage") +
  scale_colour_manual(values=c(All_DMG="green",DMG_Taken="red"))+
  facet_wrap(~Name, nrow = 2) + 
  theme(axis.text.x = element_text(angle = 90))  

ggplot(ko60mo, aes(Name, All_DPS, col=Account)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 90)) 


Sabetha the Saboteur

ko60sab<- ko60d %>%
  filter(Boss =="Sabetha the Saboteur") %>%
  group_by(Name) %>%
  mutate(encounters=n())  %>%
  filter(encounters>=2)

ko60sab %>%
  filter(Boss =="Sabetha the Saboteur") %>%
  group_by(Name) %>%
  summarise(encounters=n(), median_dps=median(All_DPS), mean_dps=mean(All_DPS), sd_dps=sd(All_DPS))  %>%
  arrange(desc(encounters))
## # A tibble: 13 x 5
##    Name                encounters median_dps mean_dps sd_dps
##    <chr>                    <int>      <dbl>    <dbl>  <dbl>
##  1 Detaz_Na_lo                  7      2705     8493.  9973.
##  2 His_Majesty_Elderon          6     13072.   13273.  2741.
##  3 Afkshadowstep                5     19440    19000   5134.
##  4 Cnarr_Fizzleblip             5     14578    14681.  4796.
##  5 Idogi                        5     12199    11336.  3775.
##  6 Liazz_The_Provoker           5      1542     1842    604.
##  7 Petra_Harkin                 5      7154     6534.  1001.
##  8 Brynh_ld_                    3      7939     7612.   887.
##  9 Idhion                       3     25691    24465.  3813.
## 10 Deontiks                     2      5037     5037    806.
## 11 Ramsay_Lannister             2     27432    27432   5210.
## 12 Veanna_Remi                  2     27610.   27610.  1418.
## 13 Wulfiekant                   2      6837     6837   4096.
ggplot(ko60sab, aes(Date)) +
  geom_line(aes(y=All_DMG, color="All_DMG")) +
  geom_line(aes(y=DMG_Taken, color="DMG_Taken")) +
  labs(color="Damage") +
  scale_colour_manual(values=c(All_DMG="green",DMG_Taken="red"))+
  facet_wrap(~Name, nrow = 2) + 
  theme(axis.text.x = element_text(angle = 90))  

ggplot(ko60sab, aes(Name, All_DPS, col=Account)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 90)) 


Samarog

ko60sam<- ko60d %>%
  filter(Boss =="Samarog") %>%
  group_by(Name) %>%
  mutate(encounters=n())  %>%
  filter(encounters>=2)

ko60sam %>%
  filter(Boss =="Samarog") %>%
  group_by(Name) %>%
  summarise(encounters=n(), median_dps=median(All_DPS), mean_dps=mean(All_DPS), sd_dps=sd(All_DPS))  %>%
  arrange(desc(encounters))
## # A tibble: 13 x 5
##    Name                encounters median_dps mean_dps sd_dps
##    <chr>                    <int>      <dbl>    <dbl>  <dbl>
##  1 Detaz_Na_lo                  6      1540.    1496.  104. 
##  2 Idogi                        6     10435     9702. 3352. 
##  3 Cnarr_Fizzleblip             5     11537    10185. 2726. 
##  4 Liazz_The_Provoker           5      1735     1841   496. 
##  5 Afkshadowstep                4     14984.   14947   928. 
##  6 Brynh_ld_                    4      3837     3166  1491. 
##  7 Deontiks                     4      3091     3186   464. 
##  8 Cael_Remi                    3     17162    14261. 5297. 
##  9 Nickarsus                    3     11659    11633.  702. 
## 10 His_Majesty_Elderon          2      3794.    3794. 5274. 
## 11 I_Nicki_Mirage_I             2      9691     9691  2367. 
## 12 Petra_Harkin                 2      4146.    4146.   33.2
## 13 Ramsay_Manson                2     15845    15845    62.2
ggplot(ko60sam, aes(Date)) +
  geom_line(aes(y=All_DMG, color="All_DMG")) +
  geom_line(aes(y=DMG_Taken, color="DMG_Taken")) +
  labs(color="Damage") +
  scale_colour_manual(values=c(All_DMG="green",DMG_Taken="red"))+
  facet_wrap(~Name, nrow = 2) +
  theme(axis.text.x = element_text(angle = 90))  

ggplot(ko60sam, aes(Name, All_DPS, col=Account)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 90)) 


Slothasor

ko60slo<- ko60d %>%
  filter(Boss =="Slothasor") %>%
  group_by(Name) %>%
  mutate(encounters=n())  %>%
  filter(encounters>=2)

ko60slo %>%
  filter(Boss =="Slothasor") %>%
  group_by(Name) %>%
  summarise(encounters=n(), median_dps=median(All_DPS), mean_dps=mean(All_DPS), sd_dps=sd(All_DPS))  %>%
  arrange(desc(encounters))
## # A tibble: 9 x 5
##   Name                encounters median_dps mean_dps sd_dps
##   <chr>                    <int>      <dbl>    <dbl>  <dbl>
## 1 Afkshadowstep                3     13599    13853    860.
## 2 Brynh_ld_                    3      4567     4222   1056.
## 3 Cnarr_Fizzleblip             3      7554     7529.  3567.
## 4 Detaz_Na_lo                  3      1380     1467.   324.
## 5 Idogi                        3     10205     8527   3472.
## 6 Liazz_The_Provoker           3      2006     2195    510.
## 7 His_Majesty_Elderon          2      7147     7147    652.
## 8 Petra_Harkin                 2      5344.    5344.   547.
## 9 Ramsay_Manson                2     18168.   18168.  2979.
ggplot(ko60slo, aes(Date)) +
  geom_line(aes(y=All_DMG, color="All_DMG")) +
  geom_line(aes(y=DMG_Taken, color="DMG_Taken")) +
  labs(color="Damage") +
  scale_colour_manual(values=c(All_DMG="green",DMG_Taken="red"))+
  facet_wrap(~Name, nrow = 2) + 
  theme(axis.text.x = element_text(angle = 90)) 

ggplot(ko60slo, aes(Name, All_DPS, col=Account)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 90)) 


Vale Guardian

ko60vg<- ko60d %>%
  filter(Boss =="Vale Guardian") %>%
  group_by(Name) %>%
  mutate(encounters=n())  %>%
  filter(encounters>=2)

ko60vg %>%
  filter(Boss =="Vale Guardian") %>%
  group_by(Name) %>%
  summarise(encounters=n(), median_dps=median(All_DPS), mean_dps=mean(All_DPS), sd_dps=sd(All_DPS))  %>%
  arrange(desc(encounters))
## # A tibble: 19 x 5
##    Name                encounters median_dps mean_dps sd_dps
##    <chr>                    <int>      <dbl>    <dbl>  <dbl>
##  1 Detaz_Na_lo                 15      1755     2738. 3752. 
##  2 Idogi                       12      6008     7272. 3956. 
##  3 Liazz_The_Provoker          12      1737     1749   428. 
##  4 Afkshadowstep               11     14849    16288. 3526. 
##  5 His_Majesty_Elderon         11      8956     9203. 1724. 
##  6 Petra_Harkin                11      5204     8995. 6005. 
##  7 Idhion                      10     16236    16980. 2029. 
##  8 Deontiks                     8      2841     2790.  866. 
##  9 Brynhild_                    6      4254     4374.  551. 
## 10 Cnarr_Fizzleblip             5     12478    10704. 4468. 
## 11 Brynh_ld_                    4      5803     8508. 6908. 
## 12 I_Nicki_Mirage_I             4     10278    10278    56.6
## 13 Ramsay_Lannister             4     24528.   25061  2576. 
## 14 Veanna_Remi                  3     18221    17949.  530. 
## 15 Wulfiekant                   3     13306    13619   991. 
## 16 Anityr_Svoldjann             2      3199     3199   693. 
## 17 Beast_Tamer_Braun            2     15513    15513     0  
## 18 Hellga_Sinnett               2      2543     2543   595. 
## 19 Kettlet                      2      8753     8753     0
ggplot(ko60vg, aes(Date)) +
  geom_line(aes(y=All_DMG, color="All_DMG")) +
  geom_line(aes(y=DMG_Taken, color="DMG_Taken")) +
  labs(color="Damage") +
  scale_colour_manual(values=c(All_DMG="green",DMG_Taken="red"))+
  facet_wrap(~Name, nrow = 2) +
  theme(axis.text.x = element_text(angle = 90)) 

ggplot(ko60vg, aes(Name, All_DPS, col=Account)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 90))