load the cars dataset from csv file downloads

df <- read.csv("mtcars-3.csv")

display first few rows

head(df)

print the dimension

dim(df)
[1] 32 12

print the data structure of varaible class (df)

str(df)
'data.frame':   32 obs. of  12 variables:
 $ model: chr  "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
 $ mpg  : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl  : int  6 6 4 6 8 6 8 4 4 6 ...
 $ disp : num  160 160 108 258 360 ...
 $ hp   : int  110 110 93 110 175 105 245 62 95 123 ...
 $ drat : num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt   : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec : num  16.5 17 18.6 19.4 17 ...
 $ vs   : int  0 0 1 1 0 1 0 1 1 1 ...
 $ am   : int  1 1 1 0 0 0 0 0 0 0 ...
 $ gear : int  4 4 4 3 3 3 3 4 4 4 ...
 $ carb : int  4 4 1 1 2 1 4 2 2 4 ...

print data types of specific columns

cat("Data type of 'model' column: " , class(df$model), "\n")
Data type of 'model' column:  character 
cat("Data type of 'mpg' column: ", class(df$mpg), "\n")
Data type of 'mpg' column:  numeric 
cat("Data type of 'hp' column: ", class(df$hp), "\n")
Data type of 'hp' column:  integer 
cat("Data type of 'am' column: ", class(df$am), "\n")
Data type of 'am' column:  integer 
summary(df)
    model                mpg             cyl             disp      
 Length:32          Min.   :10.40   Min.   :4.000   Min.   : 71.1  
 Class :character   1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8  
 Mode  :character   Median :19.20   Median :6.000   Median :196.3  
                    Mean   :20.09   Mean   :6.188   Mean   :230.7  
                    3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0  
                    Max.   :33.90   Max.   :8.000   Max.   :472.0  
       hp             drat             wt             qsec      
 Min.   : 52.0   Min.   :2.760   Min.   :1.513   Min.   :14.50  
 1st Qu.: 96.5   1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89  
 Median :123.0   Median :3.695   Median :3.325   Median :17.71  
 Mean   :146.7   Mean   :3.597   Mean   :3.217   Mean   :17.85  
 3rd Qu.:180.0   3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90  
 Max.   :335.0   Max.   :4.930   Max.   :5.424   Max.   :22.90  
       vs               am              gear            carb      
 Min.   :0.0000   Min.   :0.0000   Min.   :3.000   Min.   :1.000  
 1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
 Median :0.0000   Median :0.0000   Median :4.000   Median :2.000  
 Mean   :0.4375   Mean   :0.4062   Mean   :3.688   Mean   :2.812  
 3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
 Max.   :1.0000   Max.   :1.0000   Max.   :5.000   Max.   :8.000  

Change the data type of ‘am’ column to boolean / logical

df$am <- as.logical(df$am)

Create a scatter plot that compares ‘hp’ & ‘mpg’

plot(df$hp, df$mpg,
     xlab = "Horsepower (hp)",
     ylab = "Miles per Gallon (mpg)",
     main = "Scatter Plot of hp vs mpg")

Horse power and mpg have an inverse relation ship. The higher the MPG, the lower the horse power, with some outliers.

Bar Chart

Count number of cars in each cylinder category.

cylinder_counts <- table(df$cyl)

create bar chart

barplot(cylinder_counts,
        main = "Distribution of cars by Cylinder Count",
        xlab = "Number of Cylinders",
        ylab = "Count",
        col = "skyblue")

Create a histogram for ‘mpg’

hist(df$mpg,
     main = "Distribution of Miles per Gallon (mpg)",
     xlab = "Miles per Gallon (mpg)",
     ylab= "Frequency",
     col="purple",
     border = "black")

LS0tDQp0aXRsZTogIkhvbWV3b3JrMSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCg0KDQpsb2FkIHRoZSBjYXJzIGRhdGFzZXQgZnJvbSBjc3YgZmlsZSBkb3dubG9hZHMNCg0KYGBge3J9DQpkZiA8LSByZWFkLmNzdigibXRjYXJzLTMuY3N2IikNCmBgYA0KDQpkaXNwbGF5IGZpcnN0IGZldyByb3dzDQoNCmBgYHtyfQ0KaGVhZChkZikNCmBgYA0KcHJpbnQgdGhlIGRpbWVuc2lvbg0KDQpgYGB7cn0NCmRpbShkZikNCmBgYA0KDQpwcmludCB0aGUgZGF0YSBzdHJ1Y3R1cmUgb2YgdmFyYWlibGUgY2xhc3MgKGRmKQ0KYGBge3J9DQpzdHIoZGYpDQpgYGANCnByaW50IGRhdGEgdHlwZXMgb2Ygc3BlY2lmaWMgY29sdW1ucw0KDQpgYGB7cn0NCmNhdCgiRGF0YSB0eXBlIG9mICdtb2RlbCcgY29sdW1uOiAiICwgY2xhc3MoZGYkbW9kZWwpLCAiXG4iKQ0KY2F0KCJEYXRhIHR5cGUgb2YgJ21wZycgY29sdW1uOiAiLCBjbGFzcyhkZiRtcGcpLCAiXG4iKQ0KY2F0KCJEYXRhIHR5cGUgb2YgJ2hwJyBjb2x1bW46ICIsIGNsYXNzKGRmJGhwKSwgIlxuIikNCmNhdCgiRGF0YSB0eXBlIG9mICdhbScgY29sdW1uOiAiLCBjbGFzcyhkZiRhbSksICJcbiIpDQoNCmBgYA0KYGBge3J9DQpzdW1tYXJ5KGRmKQ0KYGBgDQpDaGFuZ2UgdGhlIGRhdGEgdHlwZSBvZiAnYW0nIGNvbHVtbiB0byBib29sZWFuIC8gbG9naWNhbA0KDQpgYGB7cn0NCmRmJGFtIDwtIGFzLmxvZ2ljYWwoZGYkYW0pDQpgYGANCg0KQ3JlYXRlIGEgc2NhdHRlciBwbG90IHRoYXQgY29tcGFyZXMgJ2hwJyAmICdtcGcnDQoNCmBgYHtyfQ0KcGxvdChkZiRocCwgZGYkbXBnLA0KICAgICB4bGFiID0gIkhvcnNlcG93ZXIgKGhwKSIsDQogICAgIHlsYWIgPSAiTWlsZXMgcGVyIEdhbGxvbiAobXBnKSIsDQogICAgIG1haW4gPSAiU2NhdHRlciBQbG90IG9mIGhwIHZzIG1wZyIpDQpgYGANCkhvcnNlIHBvd2VyIGFuZCBtcGcgaGF2ZSBhbiBpbnZlcnNlIHJlbGF0aW9uIHNoaXAuDQpUaGUgaGlnaGVyIHRoZSBNUEcsIHRoZSBsb3dlciB0aGUgaG9yc2UgcG93ZXIsIHdpdGggc29tZSBvdXRsaWVycy4NCg0KDQpCYXIgQ2hhcnQNCg0KQ291bnQgbnVtYmVyIG9mIGNhcnMgaW4gZWFjaCBjeWxpbmRlciBjYXRlZ29yeS4NCmBgYHtyfQ0KY3lsaW5kZXJfY291bnRzIDwtIHRhYmxlKGRmJGN5bCkNCg0KDQpgYGANCmNyZWF0ZSBiYXIgY2hhcnQNCmBgYHtyfQ0KYmFycGxvdChjeWxpbmRlcl9jb3VudHMsDQogICAgICAgIG1haW4gPSAiRGlzdHJpYnV0aW9uIG9mIGNhcnMgYnkgQ3lsaW5kZXIgQ291bnQiLA0KICAgICAgICB4bGFiID0gIk51bWJlciBvZiBDeWxpbmRlcnMiLA0KICAgICAgICB5bGFiID0gIkNvdW50IiwNCiAgICAgICAgY29sID0gInNreWJsdWUiKQ0KYGBgDQoNCkNyZWF0ZSBhIGhpc3RvZ3JhbSBmb3IgJ21wZycNCmBgYHtyfQ0KaGlzdChkZiRtcGcsDQogICAgIG1haW4gPSAiRGlzdHJpYnV0aW9uIG9mIE1pbGVzIHBlciBHYWxsb24gKG1wZykiLA0KICAgICB4bGFiID0gIk1pbGVzIHBlciBHYWxsb24gKG1wZykiLA0KICAgICB5bGFiPSAiRnJlcXVlbmN5IiwNCiAgICAgY29sPSJwdXJwbGUiLA0KICAgICBib3JkZXIgPSAiYmxhY2siKQ0KYGBgDQoNCg==