R語言學習筆記(三)操縱資料

2021-10-03 07:46:01 字數 4414 閱讀 6615

操縱資料

原始資料—預處理後的資料

基本方法:

提取乙個或多個型別相同的元素

從列表或資料框中提取元素

$按名字從列表或資料框中提取元素

> m<-1:10  #r語言陣列下標從1開始

> m[1]

[1] 1

> m[5]

[1] 5

> m[1:5]

[1] 1 2 3 4 5

> m[6:10]

[1] 6 7 8 9 10

> m[m>5]

[1] 6 7 8 9 10

> m>5 #判斷

[1] false false false false false true true true true true

> m[m>5&m<7]

[1] 6

> m[m<3 |m>7]

[1] 1 2 8 9 10

>names(y)<- c("a","b","c","d")

> y

a b c d

1 2 3 4

> y[2]

b 2

> y["b"]

b 2

> n <- matrix(1:6,nrow=3,ncol=2)

> n

[,1] [,2]

[1,] 1 4

[2,] 2 5

[3,] 3 6

> n[1,2] #[行,列]

[1] 4

> n[1,]

[1] 1 4

> n[,1]

[1] 1 2 3

> n[c(1,2),1] #取到第一,二行,第一列的元素

[1] 1 2

> class(n[1,2])

[1] "integer" #返回向量

> n[1,2,drop=false] #關掉返回向量,返回矩陣

[,1]

[1,] 4

#資料框子集

df <-data.frame(id=c(1,2,3,4),name=c("a","b","c","d"))

> df

id name

1 1 a

2 2 b

3 3 c

4 4 d

> df$id

[1] 1 2 3 4

> df$id[c(2,4)] <- na #缺失值

> df

id name

1 1 a

2 na b

3 3 c

4 na d

> df <-data.frame(id=c(1,2,3,4),id2=c(5,6,7,8),name=c("a","b","c","d"))

> df

id id2 name

1 1 5 a

2 2 6 b

3 3 7 c

4 4 8 d

> df[(df$id>2 & df$id2>6),]

id id2 name

3 3 7 c

4 4 8 d

> subset(df,df$id>3)

id id2 name

4 4 8 d

構建子集

列表子集

巢狀列表/不完全匹配

> mm <- list(id=1:4,height=170,gender="male")

> mm

$id[1] 1 2 3 4

$height

[1] 170

$gender

[1] "male"

> mm['id']

$id[1] 1 2 3 4

> mm[1]

$id[1] 1 2 3 4

> mm[[1]] #只拿到內容

[1] 1 2 3 4

> mm[[1]]

[1] 1 2 3 4

> mm[['id']]

[1] 1 2 3 4

> mm$id

[1] 1 2 3 4

> mm[c(1,3)]

$id[1] 1 2 3 4

$gender

[1] "male"

> y<-"id"

> mm[[y]]

[1] 1 2 3 4

> mm$id

[1] 1 2 3 4

> mm$y

null

#如何從列表中獲取巢狀的元素

> nn<-list(a=list(1,2,3,4),b=c("monday","tuesday"))

> nn #a本身也是列表

$a

$a[[1]]

[1] 1

$a[[2]]

[1] 2

$a[[3]]

[1] 3

$a[[4]]

[1] 4

$b[1] "monday" "tuesday"

> nn[[1]][[2]]

[1] 2

> nn[[1]][2] 子列表中的第二個元素

[[1]]

[1] 2

#獲取巢狀列表中的元素

> nn[[c(1,3)]] #列表中第乙個元素中的第三個元素

[1] 3

> nn[[c(2,2)]] #列表中第二個元素中的第二個元素

[1] "tuesday"

#不完全匹配

> l<-list(adfasdfasd=1:10)

> l$a

[1] 1 2 3 4 5 6 7 8 9 10

> l[["a"]]

null

> l[["a",exact=false]]

[1] 1 2 3 4 5 6 7 8 9 10

處理缺失值

ff<-c(1,na,2,na)

> ff[!is.na(ff)] #獲取不是缺失值的元素

[1] 1 2

ff1<-c(1,na,2,na,3)

ff2<-c("a","b",na,na,"c")

z<-complete.cases(ff1,ff2)

> ff1

[1] 1 na 2 na 3

>

> ff2

[1] "a" "b" na na "c"

> z

[1] true false false false true

library(datasets) #資料集

head(airquality)

> head(airquality) #每一行為乙個記錄,每一列乙個變數

ozone solar.r wind temp month day

1 41 190 7.4 67 5 1

2 36 118 8.0 72 5 2

3 12 149 12.6 74 5 3

4 18 313 11.5 62 5 4

5 na na 14.3 56 5 5

6 28 na 14.9 66 5 6

> g<-complete.cases((airquality)) 去缺失值

> airquality[g,][1:10,] #取前十行

ozone solar.r wind temp month day

1 41 190 7.4 67 5 1

2 36 118 8.0 72 5 2

3 12 149 12.6 74 5 3

4 18 313 11.5 62 5 4

7 23 299 8.6 65 5 7

8 19 99 13.8 59 5 8

9 8 19 20.1 61 5 9

12 16 256 9.7 69 5 12

13 11 290 9.2 66 5 13

14 14 274 10.9 68 5 14

R語言學習筆記

1.資料輸入 read.table n fileposition 函式 eg.x read.table c users administrator desktop 1.txt header t 目前只知道可以完好地讀入txt檔案 空格隔開 excel不支援 csv讀入不完全。ps.可以用excel生...

R語言學習筆記

二 data.frame資料框的常用操作 三 讀取資料檔案 四 排序函式 sort,rank,order 的區別 mydata tid s1 s2 1 1 2 1 2 1 2 1 3 1 3 2 4 2 4 3 5 3 5 4 unique mydata tid s1 s2 1 1 2 1 3 1 ...

R語言學習筆記

r語言的特點 r網路資源 常用命令 安裝某個包 install.packages alr4 檢視函式用法 比如要實現t檢驗,可以輸入?t.test 然後重點看usage和example。也可以用help t.test lm函式名及所在包 fitting linear models標題 descrip...