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")