R語言邊學邊記錄-數據框操作

> df1<-head(mtcars)

> df1<-df1[1:3]

> df1

? ? ? ? ? ? ? ? ? ?mpg cyl disp

Mazda RX4 ? ? ? ? 21.0 ? 6 ?160

Mazda RX4 Wag ? ? 21.0 ? 6 ?160

Datsun 710 ? ? ? ?22.8 ? 4 ?108

Hornet 4 Drive ? ?21.4 ? 6 ?258

Hornet Sportabout 18.7 ? 8 ?360

Valiant ? ? ? ? ? 18.1 ? 6 ?225

> df1$cyl

[1] 6 6 4 6 8 6

> df1$mpg

[1] 21.0 21.0 22.8 21.4 18.7 18.1

> attach(df1)#綁定df1數據框

> mpg

[1] 21.0 21.0 22.8 21.4 18.7 18.1

> cyl

[1] 6 6 4 6 8 6

> mpg+cyl+disp

[1] 187.0 187.0 134.8 285.4 386.7 249.1

> detach(df1)#解除綁定df1數據框

> mpg

Error: object 'mpg' not found

> df1$mpg+df1$cyl+df1$disp

[1] 187.0 187.0 134.8 285.4 386.7 249.1

> with(df1,{mpg+cyl+disp})#簡化數據框操作

[1] 187.0 187.0 134.8 285.4 386.7 249.1

> df1<-within(df1,{

+ ? sum=mpg+cyl+disp

+ ? mean=(mpg+cyl+disp)/3

+ ? }) #增加兩列

> df1

? ? ? ? ? ? ? ? ? ?mpg cyl disp ? ? ?mean ? sum

Mazda RX4 ? ? ? ? 21.0 ? 6 ?160 ?62.33333 187.0

Mazda RX4 Wag ? ? 21.0 ? 6 ?160 ?62.33333 187.0

Datsun 710 ? ? ? ?22.8 ? 4 ?108 ?44.93333 134.8

Hornet 4 Drive ? ?21.4 ? 6 ?258 ?95.13333 285.4

Hornet Sportabout 18.7 ? 8 ?360 128.90000 386.7

Valiant ? ? ? ? ? 18.1 ? 6 ?225 ?83.03333 249.1

> df1<-head(mtcars)

> df1<-df1[1:3]

> df1

? ? ? ? ? ? ? ? ? ?mpg cyl disp

Mazda RX4 ? ? ? ? 21.0 ? 6 ?160

Mazda RX4 Wag ? ? 21.0 ? 6 ?160

Datsun 710 ? ? ? ?22.8 ? 4 ?108

Hornet 4 Drive ? ?21.4 ? 6 ?258

Hornet Sportabout 18.7 ? 8 ?360

Valiant ? ? ? ? ? 18.1 ? 6 ?225

> df1<-transform(df1,s=mpg+cyl+disp,m=(mpg+cyl+disp)/3)#變形增加兩列

> df1

? ? ? ? ? ? ? ? ? ?mpg cyl disp ? ? s ? ? ? ? m

Mazda RX4 ? ? ? ? 21.0 ? 6 ?160 187.0 ?62.33333

Mazda RX4 Wag ? ? 21.0 ? 6 ?160 187.0 ?62.33333

Datsun 710 ? ? ? ?22.8 ? 4 ?108 134.8 ?44.93333

Hornet 4 Drive ? ?21.4 ? 6 ?258 285.4 ?95.13333

Hornet Sportabout 18.7 ? 8 ?360 386.7 128.90000

Valiant ? ? ? ? ? 18.1 ? 6 ?225 249.1 ?83.03333

> df1<-head(mtcars)

> df1<-df1[1:3]

> library(dplyr)#dplyr是數據處理包


載入程輯包:‘dplyr’


The following objects are masked from ‘package:stats’:


? ? filter, lag


The following objects are masked from ‘package:base’:


? ? intersect, setdiff, setequal, union


> mutate(df1,s=mpg+cyl+disp,m=(mpg+cyl+disp)/3)

? ?mpg cyl disp ? ? s ? ? ? ? m

1 21.0 ? 6 ?160 187.0 ?62.33333

2 21.0 ? 6 ?160 187.0 ?62.33333

3 22.8 ? 4 ?108 134.8 ?44.93333

4 21.4 ? 6 ?258 285.4 ?95.13333

5 18.7 ? 8 ?360 386.7 128.90000

6 18.1 ? 6 ?225 249.1 ?83.03333

> df1<-mutate(df1,s=mpg+cyl+disp,m=(mpg+cyl+disp)/3)

> df1#"mutate"與"transform"的區別在于”mutate"能直接對函數中前面的數值進行定義,而"transform"不能,比如:

? ?mpg cyl disp ? ? s ? ? ? ? m

1 21.0 ? 6 ?160 187.0 ?62.33333

2 21.0 ? 6 ?160 187.0 ?62.33333

3 22.8 ? 4 ?108 134.8 ?44.93333

4 21.4 ? 6 ?258 285.4 ?95.13333

5 18.7 ? 8 ?360 386.7 128.90000

6 18.1 ? 6 ?225 249.1 ?83.03333

> df1<-mutate(df1,s=mpg+cyl+disp,m=(mpg+cyl+disp)/3,x=s+m)#"mutate"與"transform"的區別在于”mutate"能直接對函數中前面的數值進行定義,

> #而"transform"不能

> df1

? ?mpg cyl disp ? ? s ? ? ? ? m ? ? ? ?x

1 21.0 ? 6 ?160 187.0 ?62.33333 249.3333

2 21.0 ? 6 ?160 187.0 ?62.33333 249.3333

3 22.8 ? 4 ?108 134.8 ?44.93333 179.7333

4 21.4 ? 6 ?258 285.4 ?95.13333 380.5333

5 18.7 ? 8 ?360 386.7 128.90000 515.6000

6 18.1 ? 6 ?225 249.1 ?83.03333 332.1333

> df1<-head(mtcars)

> df1<-df1[1:3]

> transform(df1,s=mpg+cyl+disp,m=(mpg+cyl+disp)/3,x=s+m)#此函數錯誤

Error in eval(substitute(list(...)), `_data`, parent.frame()) :?

? object 's' not found

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容