R03: dataframe跟數據整理

Jiaoyan Huang
4 min readJan 20, 2023

--

Basic function

首先要知道怎麼整理數據,就不能不先介紹R裡面的一種資料型態,dataframe,大部分csv、txt等檔案讀入的數據型態都是dataframe。而要如何去某一資料的格式,你可以使用class()

> class(EV)
[1] "data.frame"

以我這個EV的dataframe來說,他是一組1352rows有4columns的數據,每個columns有其特定名稱。

> dim(EV)
[1] 1352 4
> colnames(EV)
[1] "year" "region" "variable" "value"
> length(EV)
[1] 4
> nrow(EV)
[1] 1352
> ncol(EV)
[1] 4

如果你想取出某一特定row/col的資料可以使用dataframe[row,col],如果想取出特定column的數據可以使用dataframe$COLNAME, dataframe[‘COLNAME’],dataframe[,# of column]

> EV[5,4]
[1] 12308.29
> EV$value[5]
[1] 12308.29
> EV[,4]
> EV$value
> EV['value']

基本functions

head 可以幫助你快速檢視dataframe的結構跟大致的column name

head(tmp_data)
Line Model_year Model_desc Body_style Global_Market selling_state COUNTRY_STATE
1 TITAN XD 2019 TXD V8D 4X4 SL CC CREW CAB USA FL USA_FL
2 TITAN XD 2019 TXD V8D 4X4 PL CC CREW CAB USA TX USA_TX
3 TITAN XD 2019 TXD V8D 4X4 PL CC CREW CAB USA TX USA_TX
4 TITAN XD 2019 TXD V8D 4X4 SV CC CREW CAB USA FL USA_FL
5 TITAN XD 2019 TXD V8D 4X4 PL CC CREW CAB USA FL USA_FL
6 TITAN XD 2019 TXD V8D 4X4 PL CC CREW CAB USA AL USA_AL

summary 可以return某個numeric數據總解,包含最大最小值、平均、中位數、25%跟75%

summary(tmp_data$Model_year)
Min. 1st Qu. Median Mean 3rd Qu. Max.
2016 2016 2017 2017 2018 2019
max(tmp_data$Model_year)
[1] 2019

which 用來找出特定數據的功能,也可以搭配which.max、which.min使用

> which(tmp_data_USA$selling_state == "NC")
[1] 156 213 255 267 274 290 301 402 416 430 526 529 541 566 675 718 744 797 820 844 849 896 902

is.na() fuction可以幫我們找出來data.frame裡面的NA值,回傳會是每個index的True/False可以搭配which使用找出NA值的位置,同理還有is.null()、is.numeric()等等

which(is.na(tmp_data$DCM.ID))
[1] 4 7 10 13 15 21 22 26 33 35 49 50 57 67 76 93 95 96 100 101 102 103 104 105 107 108 109
[28] 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 132 134 136 137 138 140 147
[55] 148 151 153 154 155 156 157 158 159 160 161 162 164 168 170 172 180 182 192 207 209 211 212 213 230 237 243
[82] 247 252 255 259 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283

--

--