OBJECTIVE

Reading and cleaning three CSV files from last week’s Discussion:

(1) NYC Gifted and Talented Grades 2018-19 (Sheet5)

(2) D&D Characters All

(3) Untidy Dataset _624

(1) READING

nyc_gt <- read.csv("NYC Gifted and Talented Grades 2018-19 - Sheet5.csv", stringsAsFactors = FALSE)  
 
head(nyc_gt)  
##   Timestamp Entering.Grade.Level District Birth.Month OLSAT.Verbal.Score
## 1   2/14/18                    K       30     October                 24
## 2    3/1/18                    K       30    February                 25
## 3   3/27/18                    1        2     January                 25
## 4   3/27/18                    1        2         May                 25
## 5   3/27/18                    1        2        July                 25
## 6   3/27/18                    1        2    November                 25
##   OLSAT.Verbal.Percentile NNAT.Non.Verbal.Raw.Score NNAT.Non.Verbal.Percentile
## 1                      99                        40                         99
## 2                      91                        43                         99
## 3                      99                        45                         99
## 4                      99                        43                         99
## 5                      99                        42                         99
## 6                      99                        40                         99
##   Overall.Score               School.Preferences  X School.Assigned
## 1            99             NEST,Q300,PS122,Ps85 NA            NEST
## 2            97                                  NA                
## 3            99                           NEST+M NA                
## 4            99                           NEST+M NA                
## 5            99              Anderson, TAG, Nest NA                
## 6            99 NEST, TAG, LL, PS11, PS130, PS33 NA             TAG
##   Will.you.enroll.there. Timestamp.1
## 1                    YES            
## 2                                  Y
## 3                    Yes         Yes
## 4                                   
## 5                                   
## 6                    Yes     at home
str(nyc_gt)
## 'data.frame':    104 obs. of  14 variables:
##  $ Timestamp                 : chr  "2/14/18" "3/1/18" "3/27/18" "3/27/18" ...
##  $ Entering.Grade.Level      : chr  "K" "K" "1" "1" ...
##  $ District                  : int  30 30 2 2 2 2 2 1 2 2 ...
##  $ Birth.Month               : chr  "October" "February" "January" "May" ...
##  $ OLSAT.Verbal.Score        : int  24 25 25 25 25 25 25 26 26 27 ...
##  $ OLSAT.Verbal.Percentile   : int  99 91 99 99 99 99 99 99 99 99 ...
##  $ NNAT.Non.Verbal.Raw.Score : int  40 43 45 43 42 40 38 47 47 43 ...
##  $ NNAT.Non.Verbal.Percentile: int  99 99 99 99 99 99 99 99 99 99 ...
##  $ Overall.Score             : int  99 97 99 99 99 99 99 99 99 99 ...
##  $ School.Preferences        : chr  "NEST,Q300,PS122,Ps85" "" "NEST+M" "NEST+M" ...
##  $ X                         : logi  NA NA NA NA NA NA ...
##  $ School.Assigned           : chr  "NEST" "" "" "" ...
##  $ Will.you.enroll.there.    : chr  "YES" "" "Yes" "" ...
##  $ Timestamp.1               : chr  "" "Y" "Yes" "" ...

(1) TIDYING

nyc_gt <- nyc_gt %>%  
 rename(  
   Timestamp = Timestamp,  
   GradeLevel = Entering.Grade.Level,  
   District = District,  
   BirthMonth = Birth.Month,  
   OLSAT_Verbal_Score = OLSAT.Verbal.Score,  
   OLSAT_Verbal_Percentile = OLSAT.Verbal.Percentile,  
   NNAT_NonVerbal_Raw = NNAT.Non.Verbal.Raw.Score,  
   NNAT_NonVerbal_Percentile = NNAT.Non.Verbal.Percentile,  
   Overall_Score = Overall.Score,  
   School_Preferences = School.Preferences,  
   Extra = X,  
   School_Assigned = School.Assigned,  
   Enroll = Will.you.enroll.there.  
 )  

nyc_gt_tidy <- nyc_gt %>% filter(School_Assigned != "")  
 
head(nyc_gt_tidy)  
##   Timestamp GradeLevel District BirthMonth OLSAT_Verbal_Score
## 1   2/14/18          K       30    October                 24
## 2   3/27/18          1        2   November                 25
## 3   3/27/18          1        3    January                 28
## 4   3/27/18          1        2    January                 24
## 5   3/27/18          1       30        May                 25
## 6   3/27/18          2       21    October                 26
##   OLSAT_Verbal_Percentile NNAT_NonVerbal_Raw NNAT_NonVerbal_Percentile
## 1                      99                 40                        99
## 2                      99                 40                        99
## 3                      98                 45                        99
## 4                      97                 44                        99
## 5                      92                 44                        99
## 6                      99                 36                        99
##   Overall_Score                School_Preferences Extra School_Assigned Enroll
## 1            99              NEST,Q300,PS122,Ps85    NA            NEST    YES
## 2            99  NEST, TAG, LL, PS11, PS130, PS33    NA             TAG    Yes
## 3            99        NEST,Anderson,TAG,Q300,BSI    NA             TAG       
## 4            98 Nest, Anderson,LL, Tag, 11,33,130    NA              33    Yes
## 5            97                               122    NA             122      y
## 6            99                       BSI, PS 215    NA          PS 215    Yes
##   Timestamp.1
## 1            
## 2     at home
## 3        home
## 4       Y mom
## 5           N
## 6         Yes

(1) ANALYSIS

summary(nyc_gt_tidy$OLSAT_Verbal_Score)  
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   20.00   24.00   25.00   24.86   26.00   28.00
enroll_summary <- nyc_gt_tidy %>%  
 group_by(Enroll) %>%  
 summarise(count = n())  
print(enroll_summary)  
## # A tibble: 9 × 2
##   Enroll                                     count
##   <chr>                                      <int>
## 1 ""                                             3
## 2 "NO"                                           1
## 3 "No"                                           1
## 4 "Not sure."                                    1
## 5 "Unsure"                                       1
## 6 "YES"                                          1
## 7 "Yes"                                         10
## 8 "Yes (sibling is already in G&T in PS 38)"     1
## 9 "y"                                            2
library(ggplot2)  
ggplot(nyc_gt_tidy, aes(x = OLSAT_Verbal_Score)) +  
 geom_histogram(binwidth = 1, fill = "blue", color = "black") +  
 labs(title = "Distribution of OLSAT Verbal Scores", x = "Score", y = "Count")  

(2) READING

dnd_chars <- read.csv("dnd_chars_all.csv", stringsAsFactors = FALSE)  
 
head(dnd_chars)  
##        ip  finger                             hash     name           race
## 1         ed15f9d fe3ed6570067d2cd808bcee0a4396824 ee1e382c     Hill Dwarf
## 2         ed15f9d aa656cef94740b1da714d82782d8a8c4 ee1e382c     Hill Dwarf
## 3 6b5d3f4 d922658 04b9abba9ce759ef13319c520bf0eb69 f1f6ff43          Human
## 4 9b7218f b5d19a0 ba92372c716a832e03e866447cb2d102 f92bdd74 Fallen Aasimar
## 5 9b7218f b5d19a0 2f4a637dd42b9aa945abf870fe34edcf f92bdd74 Fallen Aasimar
## 6 bf0845c 6594cbd de16fbfebad327876582875339ad1e1f 5b8cf3ca        Variant
##               background                 date                class
## 1 Guild Member - Justice 2022-08-23T20:02:11Z Sorcerer 13|Cleric 1
## 2 Guild Member - Justice 2022-08-23T19:43:25Z Sorcerer 13|Cleric 1
## 3                  Noble 2022-08-22T14:57:09Z           Fighter 13
## 4              Outlander 2022-08-22T12:12:53Z   Sorcerer 3|Druid 2
## 5              Outlander 2022-08-22T12:07:21Z   Sorcerer 3|Druid 2
## 6            Entertainer 2022-08-22T03:19:30Z               Bard 1
##         justClass                        subclass level
## 1 Sorcerer|Cleric     Clockwork Soul|Order Domain    14
## 2 Sorcerer|Cleric     Clockwork Soul|Order Domain    14
## 3         Fighter                 Eldritch Knight    13
## 4  Sorcerer|Druid Shadow Magic|Circle of Wildfire     5
## 5  Sorcerer|Druid Shadow Magic|Circle of Wildfire     5
## 6            Bard                                     1
##                                    feats  HP AC Str Dex Con Int Wis Cha
## 1 Fey Touched|War Caster|Metamagic Adept 146 10   9  11  20  14  14  20
## 2                                        133 10   9  11  18  14  14  20
## 3                     Heavy Armor Master 140 21  20  12  19  14  11  10
## 4                                         34 16   8  10  14  10  16  16
## 5                                         34 16   8  10  14  10  16  16
## 6                                         10 13  10  16  14  12   8  16
##        alignment                                                      skills
## 1                                               Arcana|Religion|Intimidation
## 2                                               Arcana|Religion|Intimidation
## 3             CG                       History|Insight|Perception|Persuasion
## 4 Caltico Neutro                           Athletics|Arcana|Insight|Survival
## 5 Caltico Neutro                           Athletics|Arcana|Insight|Survival
## 6                Acrobatics|Sleight of Hand|Perception|Deception|Performance
##                                                   weapons
## 1                                  Crossbow, light|Dagger
## 2                                  Crossbow, light|Dagger
## 3 Longsword +1|Dagger|Crossbow, light|Mace Of Disruption 
## 4                                                  Dagger
## 5                                                  Dagger
## 6                                Longsword|Dagger|Longbow
##                                                                                                                                                                                                                                         spells
## 1                                Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protection from Energy*3|Freedom of Movement*4|Summon Construct*4|Greater Restoration*5|Wall of Force*5
## 2                                Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protection from Energy*3|Freedom of Movement*4|Summon Construct*4|Greater Restoration*5|Wall of Force*5
## 3 Prestidigitation*0|Mage Hand*0|Blade Ward*0|Light*0|Alarm*1|Burning Hands*1|Unseen Servant*1|Chromatic Orb*1|Magic Missile*1|Identify*1|Detect Magic*1|Absorb Elements*1|Armor of Agathys*1|Shatter*2|Misty Step*2|Enlarge/Reduce*2|Catnap*3
## 4                                                                                                                                                                                                     Burning Hands*1|Cure Wounds*1|Darkness*2
## 5                                                                                                                                                                                                     Burning Hands*1|Cure Wounds*1|Darkness*2
## 6                                                                                                                                                                                                                                             
##   castingStat
## 1         Cha
## 2         Cha
## 3         Int
## 4         Cha
## 5         Cha
## 6         Cha
##                                                               choices
## 1 metamagic/Twinned Spell*Subtle Spell*Quickened Spell*Extended Spell
## 2                metamagic/Twinned Spell*Subtle Spell*Quickened Spell
## 3                                              fighting style/Defense
## 4                            metamagic/Transmuted Spell*Seeking Spell
## 5                            metamagic/Transmuted Spell*Seeking Spell
## 6                                                                    
##         country countryCode processedAlignment good lawful processedRace
## 1        Canada          CA                      NA     NA         Dwarf
## 2        Canada          CA                      NA     NA         Dwarf
## 3 United States          US                 CG   NA     NA         Human
## 4        Brazil          BR                      NA     NA       Aasimar
## 5        Brazil          BR                      NA     NA       Aasimar
## 6        Canada          CA                      NA     NA      Half-Elf
##                                                                                                                                                                                                                                processedSpells
## 1                                                 Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protection from Energy*3|Freedom of Movement*4|*|Greater Restoration*5|Wall of Force*5
## 2                                                 Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protection from Energy*3|Freedom of Movement*4|*|Greater Restoration*5|Wall of Force*5
## 3 Prestidigitation*0|Mage Hand*0|Blade Ward*0|Light*0|Alarm*1|Burning Hands*1|Unseen Servant*1|Chromatic Orb*1|Magic Missile*1|Identify*1|Detect Magic*1|Absorb Elements*1|Armor of Agathys*1|Shatter*2|Misty Step*2|Enlarge/Reduce*2|Catnap*3
## 4                                                                                                                                                                                                     Burning Hands*1|Cure Wounds*1|Darkness*2
## 5                                                                                                                                                                                                     Burning Hands*1|Cure Wounds*1|Darkness*2
## 6                                                                                                                                                                                                                                             
##                        processedWeapons               alias
## 1                Crossbow, Light|Dagger     thirsty_davinci
## 2                Crossbow, Light|Dagger     thirsty_davinci
## 3 Longsword|Dagger|Crossbow, Light|Mace         cool_bhabha
## 4                                Dagger vigilant_mcclintock
## 5                                Dagger vigilant_mcclintock
## 6              Longsword|Dagger|Longbow        quirky_hertz
str(dnd_chars)  
## 'data.frame':    10894 obs. of  35 variables:
##  $ ip                : chr  "" "" "6b5d3f4" "9b7218f" ...
##  $ finger            : chr  "ed15f9d" "ed15f9d" "d922658" "b5d19a0" ...
##  $ hash              : chr  "fe3ed6570067d2cd808bcee0a4396824" "aa656cef94740b1da714d82782d8a8c4" "04b9abba9ce759ef13319c520bf0eb69" "ba92372c716a832e03e866447cb2d102" ...
##  $ name              : chr  "ee1e382c" "ee1e382c" "f1f6ff43" "f92bdd74" ...
##  $ race              : chr  "Hill Dwarf" "Hill Dwarf" "Human" "Fallen Aasimar" ...
##  $ background        : chr  "Guild Member - Justice" "Guild Member - Justice" "Noble" "Outlander" ...
##  $ date              : chr  "2022-08-23T20:02:11Z" "2022-08-23T19:43:25Z" "2022-08-22T14:57:09Z" "2022-08-22T12:12:53Z" ...
##  $ class             : chr  "Sorcerer 13|Cleric 1" "Sorcerer 13|Cleric 1" "Fighter 13" "Sorcerer 3|Druid 2" ...
##  $ justClass         : chr  "Sorcerer|Cleric" "Sorcerer|Cleric" "Fighter" "Sorcerer|Druid" ...
##  $ subclass          : chr  "Clockwork Soul|Order Domain" "Clockwork Soul|Order Domain" "Eldritch Knight" "Shadow Magic|Circle of Wildfire" ...
##  $ level             : int  14 14 13 5 5 1 20 20 4 4 ...
##  $ feats             : chr  "Fey Touched|War Caster|Metamagic Adept" "" "Heavy Armor Master" "" ...
##  $ HP                : int  146 133 140 34 34 10 94 116 41 35 ...
##  $ AC                : int  10 10 21 16 16 13 16 13 15 13 ...
##  $ Str               : int  9 9 20 8 8 10 13 14 14 9 ...
##  $ Dex               : int  11 11 12 10 10 16 16 15 16 17 ...
##  $ Con               : int  20 18 19 14 14 14 13 12 15 13 ...
##  $ Int               : int  14 14 14 10 10 12 15 11 11 17 ...
##  $ Wis               : int  14 14 11 16 16 8 15 17 13 10 ...
##  $ Cha               : int  20 20 10 16 16 16 14 11 11 11 ...
##  $ alignment         : chr  "" "" "CG" "Caltico Neutro" ...
##  $ skills            : chr  "Arcana|Religion|Intimidation" "Arcana|Religion|Intimidation" "History|Insight|Perception|Persuasion" "Athletics|Arcana|Insight|Survival" ...
##  $ weapons           : chr  "Crossbow, light|Dagger" "Crossbow, light|Dagger" "Longsword +1|Dagger|Crossbow, light|Mace Of Disruption " "Dagger" ...
##  $ spells            : chr  "Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protectio"| __truncated__ "Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protectio"| __truncated__ "Prestidigitation*0|Mage Hand*0|Blade Ward*0|Light*0|Alarm*1|Burning Hands*1|Unseen Servant*1|Chromatic Orb*1|Ma"| __truncated__ "Burning Hands*1|Cure Wounds*1|Darkness*2" ...
##  $ castingStat       : chr  "Cha" "Cha" "Int" "Cha" ...
##  $ choices           : chr  "metamagic/Twinned Spell*Subtle Spell*Quickened Spell*Extended Spell" "metamagic/Twinned Spell*Subtle Spell*Quickened Spell" "fighting style/Defense" "metamagic/Transmuted Spell*Seeking Spell" ...
##  $ country           : chr  "Canada" "Canada" "United States" "Brazil" ...
##  $ countryCode       : chr  "CA" "CA" "US" "BR" ...
##  $ processedAlignment: chr  "" "" "CG" "" ...
##  $ good              : logi  NA NA NA NA NA NA ...
##  $ lawful            : logi  NA NA NA NA NA NA ...
##  $ processedRace     : chr  "Dwarf" "Dwarf" "Human" "Aasimar" ...
##  $ processedSpells   : chr  "Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protectio"| __truncated__ "Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protectio"| __truncated__ "Prestidigitation*0|Mage Hand*0|Blade Ward*0|Light*0|Alarm*1|Burning Hands*1|Unseen Servant*1|Chromatic Orb*1|Ma"| __truncated__ "Burning Hands*1|Cure Wounds*1|Darkness*2" ...
##  $ processedWeapons  : chr  "Crossbow, Light|Dagger" "Crossbow, Light|Dagger" "Longsword|Dagger|Crossbow, Light|Mace" "Dagger" ...
##  $ alias             : chr  "thirsty_davinci" "thirsty_davinci" "cool_bhabha" "vigilant_mcclintock" ...

(2) TIDYING

if("date" %in% names(dnd_chars)){  
 dnd_chars$date <- as.Date(dnd_chars$date)  
}  
 
dnd_chars_tidy <- dnd_chars %>%  
 mutate(  
   Primary_Class = sapply(strsplit(as.character(class), '\\\\|'), `[`, 1),  
   Secondary_Class = sapply(strsplit(as.character(class), '\\\\|'), function(x) ifelse(length(x)>1, x[2], NA))  
 )  
 
head(dnd_chars_tidy) 
##        ip  finger                             hash     name           race
## 1         ed15f9d fe3ed6570067d2cd808bcee0a4396824 ee1e382c     Hill Dwarf
## 2         ed15f9d aa656cef94740b1da714d82782d8a8c4 ee1e382c     Hill Dwarf
## 3 6b5d3f4 d922658 04b9abba9ce759ef13319c520bf0eb69 f1f6ff43          Human
## 4 9b7218f b5d19a0 ba92372c716a832e03e866447cb2d102 f92bdd74 Fallen Aasimar
## 5 9b7218f b5d19a0 2f4a637dd42b9aa945abf870fe34edcf f92bdd74 Fallen Aasimar
## 6 bf0845c 6594cbd de16fbfebad327876582875339ad1e1f 5b8cf3ca        Variant
##               background       date                class       justClass
## 1 Guild Member - Justice 2022-08-23 Sorcerer 13|Cleric 1 Sorcerer|Cleric
## 2 Guild Member - Justice 2022-08-23 Sorcerer 13|Cleric 1 Sorcerer|Cleric
## 3                  Noble 2022-08-22           Fighter 13         Fighter
## 4              Outlander 2022-08-22   Sorcerer 3|Druid 2  Sorcerer|Druid
## 5              Outlander 2022-08-22   Sorcerer 3|Druid 2  Sorcerer|Druid
## 6            Entertainer 2022-08-22               Bard 1            Bard
##                          subclass level                                  feats
## 1     Clockwork Soul|Order Domain    14 Fey Touched|War Caster|Metamagic Adept
## 2     Clockwork Soul|Order Domain    14                                       
## 3                 Eldritch Knight    13                     Heavy Armor Master
## 4 Shadow Magic|Circle of Wildfire     5                                       
## 5 Shadow Magic|Circle of Wildfire     5                                       
## 6                                     1                                       
##    HP AC Str Dex Con Int Wis Cha      alignment
## 1 146 10   9  11  20  14  14  20               
## 2 133 10   9  11  18  14  14  20               
## 3 140 21  20  12  19  14  11  10             CG
## 4  34 16   8  10  14  10  16  16 Caltico Neutro
## 5  34 16   8  10  14  10  16  16 Caltico Neutro
## 6  10 13  10  16  14  12   8  16               
##                                                        skills
## 1                                Arcana|Religion|Intimidation
## 2                                Arcana|Religion|Intimidation
## 3                       History|Insight|Perception|Persuasion
## 4                           Athletics|Arcana|Insight|Survival
## 5                           Athletics|Arcana|Insight|Survival
## 6 Acrobatics|Sleight of Hand|Perception|Deception|Performance
##                                                   weapons
## 1                                  Crossbow, light|Dagger
## 2                                  Crossbow, light|Dagger
## 3 Longsword +1|Dagger|Crossbow, light|Mace Of Disruption 
## 4                                                  Dagger
## 5                                                  Dagger
## 6                                Longsword|Dagger|Longbow
##                                                                                                                                                                                                                                         spells
## 1                                Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protection from Energy*3|Freedom of Movement*4|Summon Construct*4|Greater Restoration*5|Wall of Force*5
## 2                                Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protection from Energy*3|Freedom of Movement*4|Summon Construct*4|Greater Restoration*5|Wall of Force*5
## 3 Prestidigitation*0|Mage Hand*0|Blade Ward*0|Light*0|Alarm*1|Burning Hands*1|Unseen Servant*1|Chromatic Orb*1|Magic Missile*1|Identify*1|Detect Magic*1|Absorb Elements*1|Armor of Agathys*1|Shatter*2|Misty Step*2|Enlarge/Reduce*2|Catnap*3
## 4                                                                                                                                                                                                     Burning Hands*1|Cure Wounds*1|Darkness*2
## 5                                                                                                                                                                                                     Burning Hands*1|Cure Wounds*1|Darkness*2
## 6                                                                                                                                                                                                                                             
##   castingStat
## 1         Cha
## 2         Cha
## 3         Int
## 4         Cha
## 5         Cha
## 6         Cha
##                                                               choices
## 1 metamagic/Twinned Spell*Subtle Spell*Quickened Spell*Extended Spell
## 2                metamagic/Twinned Spell*Subtle Spell*Quickened Spell
## 3                                              fighting style/Defense
## 4                            metamagic/Transmuted Spell*Seeking Spell
## 5                            metamagic/Transmuted Spell*Seeking Spell
## 6                                                                    
##         country countryCode processedAlignment good lawful processedRace
## 1        Canada          CA                      NA     NA         Dwarf
## 2        Canada          CA                      NA     NA         Dwarf
## 3 United States          US                 CG   NA     NA         Human
## 4        Brazil          BR                      NA     NA       Aasimar
## 5        Brazil          BR                      NA     NA       Aasimar
## 6        Canada          CA                      NA     NA      Half-Elf
##                                                                                                                                                                                                                                processedSpells
## 1                                                 Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protection from Energy*3|Freedom of Movement*4|*|Greater Restoration*5|Wall of Force*5
## 2                                                 Alarm*1|Protection from Evil and Good*1|Command*1|Heroism*1|Aid*2|Lesser Restoration*2|Dispel Magic*3|Protection from Energy*3|Freedom of Movement*4|*|Greater Restoration*5|Wall of Force*5
## 3 Prestidigitation*0|Mage Hand*0|Blade Ward*0|Light*0|Alarm*1|Burning Hands*1|Unseen Servant*1|Chromatic Orb*1|Magic Missile*1|Identify*1|Detect Magic*1|Absorb Elements*1|Armor of Agathys*1|Shatter*2|Misty Step*2|Enlarge/Reduce*2|Catnap*3
## 4                                                                                                                                                                                                     Burning Hands*1|Cure Wounds*1|Darkness*2
## 5                                                                                                                                                                                                     Burning Hands*1|Cure Wounds*1|Darkness*2
## 6                                                                                                                                                                                                                                             
##                        processedWeapons               alias Primary_Class
## 1                Crossbow, Light|Dagger     thirsty_davinci             S
## 2                Crossbow, Light|Dagger     thirsty_davinci             S
## 3 Longsword|Dagger|Crossbow, Light|Mace         cool_bhabha             F
## 4                                Dagger vigilant_mcclintock             S
## 5                                Dagger vigilant_mcclintock             S
## 6              Longsword|Dagger|Longbow        quirky_hertz             B
##   Secondary_Class
## 1               o
## 2               o
## 3               i
## 4               o
## 5               o
## 6               a

(2) ANALYSIS

summary(dnd_chars_tidy$level)  
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   1.000   4.000   4.754   6.000 261.000
class_counts <- dnd_chars_tidy %>% group_by(Primary_Class) %>% summarise(count = n())  
print(class_counts)  
## # A tibble: 12 × 2
##    Primary_Class count
##    <chr>         <int>
##  1 A               218
##  2 B              1687
##  3 C              1006
##  4 D               725
##  5 F              1464
##  6 G                 2
##  7 M               731
##  8 P               894
##  9 R              2107
## 10 S               659
## 11 W              1400
## 12 c                 1
ggplot(dnd_chars_tidy, aes(x = level)) +  
 geom_histogram(binwidth = 1, fill = "green", color = "black") +  
 labs(title = "Distribution of Character Levels", x = "Level", y = "Count")  

(3) READING

untidy <- read.csv("Untidydataset _624.csv", stringsAsFactors = FALSE)  
 
head(untidy)  
##   Untidy.Breast.Cancer.Dataset..2020.2024.        X       X.1      X.2
## 1                               Patient_ID    Month Age_Group     Race
## 2                                     P001  January     30-39    White
## 3                                     P002  January     40-49    Black
## 4                                     P003  January     50-59 Hispanic
## 5                                     P004 February     30-39    Asian
## 6                                     P005 February     40-49    White
##          X.3        X.4        X.5        X.6        X.7            X.8
## 1 Cases_2020 Cases_2021 Cases_2022 Cases_2023 Cases_2024 Total_Patients
## 2         50         55         60         65         70            300
## 3         90         95        100        105        120            510
## 4         80         85         88         90        110            453
## 5         70         75         80         85         90            400
## 6        110        115        120        125        140            610
##               X.9 X.10 X.11
## 1            Type   NA   NA
## 2 Invasive Ductal   NA   NA
## 3         Lobular   NA   NA
## 4 Triple-Negative   NA   NA
## 5           HER2+   NA   NA
## 6    Inflammatory   NA   NA
str(untidy) 
## 'data.frame':    15 obs. of  13 variables:
##  $ Untidy.Breast.Cancer.Dataset..2020.2024.: chr  "Patient_ID" "P001" "P002" "P003" ...
##  $ X                                       : chr  "Month" "January" "January" "January" ...
##  $ X.1                                     : chr  "Age_Group" "30-39" "40-49" "50-59" ...
##  $ X.2                                     : chr  "Race" "White" "Black" "Hispanic" ...
##  $ X.3                                     : chr  "Cases_2020" "50" "90" "80" ...
##  $ X.4                                     : chr  "Cases_2021" "55" "95" "85" ...
##  $ X.5                                     : chr  "Cases_2022" "60" "100" "88" ...
##  $ X.6                                     : chr  "Cases_2023" "65" "105" "90" ...
##  $ X.7                                     : chr  "Cases_2024" "70" "120" "110" ...
##  $ X.8                                     : chr  "Total_Patients" "300" "510" "453" ...
##  $ X.9                                     : chr  "Type" "Invasive Ductal" "Lobular" "Triple-Negative" ...
##  $ X.10                                    : logi  NA NA NA NA NA NA ...
##  $ X.11                                    : logi  NA NA NA NA NA NA ...

(3) TIDYING

untidy <- untidy %>%   
 rename_all(~ make.names(.))  
 
 
if(all(c('measurement1','measurement2','measurement3') %in% names(untidy))){  
 untidy_tidy <- untidy %>%   
   pivot_longer(cols = c(measurement1, measurement2, measurement3),   
                names_to = "Measurement", values_to = "Value")  
} else {  
 untidy_tidy <- untidy # if no such columns exist, use the data as is.  
}  
 
head(untidy_tidy)  
##   Untidy.Breast.Cancer.Dataset..2020.2024.        X       X.1      X.2
## 1                               Patient_ID    Month Age_Group     Race
## 2                                     P001  January     30-39    White
## 3                                     P002  January     40-49    Black
## 4                                     P003  January     50-59 Hispanic
## 5                                     P004 February     30-39    Asian
## 6                                     P005 February     40-49    White
##          X.3        X.4        X.5        X.6        X.7            X.8
## 1 Cases_2020 Cases_2021 Cases_2022 Cases_2023 Cases_2024 Total_Patients
## 2         50         55         60         65         70            300
## 3         90         95        100        105        120            510
## 4         80         85         88         90        110            453
## 5         70         75         80         85         90            400
## 6        110        115        120        125        140            610
##               X.9 X.10 X.11
## 1            Type   NA   NA
## 2 Invasive Ductal   NA   NA
## 3         Lobular   NA   NA
## 4 Triple-Negative   NA   NA
## 5           HER2+   NA   NA
## 6    Inflammatory   NA   NA

(3) ANALYSIS

summary(untidy_tidy)  
##  Untidy.Breast.Cancer.Dataset..2020.2024.      X                 X.1           
##  Length:15                                Length:15          Length:15         
##  Class :character                         Class :character   Class :character  
##  Mode  :character                         Mode  :character   Mode  :character  
##      X.2                X.3                X.4                X.5           
##  Length:15          Length:15          Length:15          Length:15         
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##      X.6                X.7                X.8                X.9           
##  Length:15          Length:15          Length:15          Length:15         
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##    X.10           X.11        
##  Mode:logical   Mode:logical  
##  NA's:15        NA's:15       
## 
if("Value" %in% names(untidy_tidy)){  
 ggplot(untidy_tidy, aes(x = Value)) +  
   geom_histogram(fill = "purple", color = "black") +  
   labs(title = "Distribution of Values", x = "Value", y = "Count")  
}  

CONCLUSION

(1) NYC Gifted and Talented Data

Removed rows with missing school assignments

Analyzed test score distributions

(2) D&D Characters Data

Converted dates

Split combined class data

Analyzed character levels and class distributions

(3) Untidy Dataset _624

Renamed columns and potentially gathered measurement columnns

Summarized dataset with descriptive statistics and a plot