## ===== Concept 03 - Data structures =====
## 1. vector => can use for only 1 datatype (single datatype)
## 2. matrix
## 3. list
## 4. dataframe
## ----- vector example -----
friends <- c("toy", "jenny", "lisa", "jisoo", "rose")
## subset the vector
## [1] position
## [2] condition
## [3] name
ages <- c(37, 28, 25, 30, 31)
ages <- c(toy=37, jenny=28, lisa=25)
## ----- matrix example -----
m1 <- matrix(1:10, ncol = 5, byrow = TRUE)
m2 <- matrix(
c(3,4,5,8,10,12),
ncol = 3,
byrow = TRUE
)
## wrap variable in () to show its value
(m22 <- matrix(
c(13,4,5,8,10,12),
ncol = 3,
byrow = TRUE
))
## Matrix multiplication
m1 <- matrix(1:6, ncol = 3)
m2 <- matrix(c(5,5,6,6,9,10), ncol = 2)
m1 %*% m2
## ----- list example ----- key - value pair
tony <- list(
fname = "Tanapoom",
age = 31,
dob = "06-Aug"
)
tony$fname
## ----- dataframe example -----
id <- 1:5
friends <- c("toy", "lisa", "jisoo", "jenny", "david")
age <- c(37, 25, 30, 22, 28)
city <- c("bangkok", rep("london", 3), "tokyo")
## dataframe
df <- data.frame(id,
friends,
age,
city)
View(df)
## subset by position
df
df[3, ]
df[3, c(2,4)]
df[ , 1:2]
df[4:5, 4]
df[1:3, 2]
df$city
df[df$age < 30, ]
df[df$age < 30, "friends"]
## Use SQL syntax in R
sqldf("select avg(age) from df")
str(df)
summary(df)
ncol(df)
df$city <- as.factor(df$city)
str(df)
summary(df)
## create column
df$reading <- c(T,T,T,F,F)
df
df[df$reading, ]
df[df$reading == F, ]
df[!df$reading, ]
## remove column
df$reading <- NULL
df
## export column
write.csv(df, "friends.csv",
row.names = FALSE)
df <- read.csv("friends.csv")
df