#將向量資料組合為data frame(數據框)
#建立向量
id <- c("001", "002", "003", "004", "005")
name <- c("superman", "batman", "spiderman", "wolverine", "wonderwoman")
height <- c(190, 188, 178, 150, 183)
weight <- c(102, 95, 76, 88, 59)
gender <- c("Male", "Male", "Male", "Male", "Female")
id
## [1] "001" "002" "003" "004" "005"
height
## [1] 190 188 178 150 183
#取出資料
id[2]
## [1] "002"
name[3:5]
## [1] "spiderman" "wolverine" "wonderwoman"
name[-1]
## [1] "batman" "spiderman" "wolverine" "wonderwoman"
name[-c(1,3,5)]
## [1] "batman" "wolverine"
#將這些向量組合為data frame
heroes <- data.frame(id, name, height, weight, gender)
heroes
## id name height weight gender
## 1 001 superman 190 102 Male
## 2 002 batman 188 95 Male
## 3 003 spiderman 178 76 Male
## 4 004 wolverine 150 88 Male
## 5 005 wonderwoman 183 59 Female
#用class()查詢資料型態
class(heroes)
## [1] "data.frame"
class(name)
## [1] "character"
class(height)
## [1] "numeric"
class(gender)
## [1] "character"
#存成.RData格式
save(heroes, file = "heroes.RData")
load("heroes.RData")
#取出資料
heroes[2, ]#取出第二列資料
## id name height weight gender
## 2 002 batman 188 95 Male
heroes[,2]#取出第二欄資料
## [1] superman batman spiderman wolverine wonderwoman
## Levels: batman spiderman superman wolverine wonderwoman
heroes[2, 2]##取出第二列第二欄資料
## [1] batman
## Levels: batman spiderman superman wolverine wonderwoman
heroes[5,]
## id name height weight gender
## 5 005 wonderwoman 183 59 Female
#用欄位名稱取出某欄的資料,有兩種方法:
heroes[["name"]]
## [1] superman batman spiderman wolverine wonderwoman
## Levels: batman spiderman superman wolverine wonderwoman
##或是
heroes$name
## [1] superman batman spiderman wolverine wonderwoman
## Levels: batman spiderman superman wolverine wonderwoman
heroes$height
## [1] 190 188 178 150 183
mean(heroes$height)
## [1] 177.8
heroes[1:3,]
## id name height weight gender
## 1 001 superman 190 102 Male
## 2 002 batman 188 95 Male
## 3 003 spiderman 178 76 Male
heroes[heroes$name=="spiderman",]
## id name height weight gender
## 3 003 spiderman 178 76 Male
heroes[heroes$name!="spiderman",]
## id name height weight gender
## 1 001 superman 190 102 Male
## 2 002 batman 188 95 Male
## 4 004 wolverine 150 88 Male
## 5 005 wonderwoman 183 59 Female
heroes[heroes$height>180,]
## id name height weight gender
## 1 001 superman 190 102 Male
## 2 002 batman 188 95 Male
## 5 005 wonderwoman 183 59 Female
barplot(sort(heroes$height, decreasing = TRUE), main = "Heroes", sub = "by Peter Liu", names.arg = heroes$name, xlab = "name", ylab = "height", col = c(1:5))
