1. 程式人生 > >R語言資料框的常用操作

R語言資料框的常用操作

以下給出資料框常用的基本操作,儘量全面的給出一個完整的資料操作:

目錄

  • 資料框概覽
  • 更改增加資料框列名
  • 資料框變數(variables)的篩選
    • 索引篩選的幾種格式
    • 條件篩選的方式
  • 資料框觀測(observations)的篩選
  • 資料框的合併
    • 資料框列的合併
    • 資料框行的合併
  • 資料框的其他常用操作
    • 排序
    • 樣本統計

資料框概覽

head(gwas)

rsid AC ytx beta se tstat pval
rs114900175 2766.25 0.054902 -2.78921e-04 3.33375e-04 -0.836659 0.402785
rs143628150 4441.94 1.486270 5.39626e-05 2.60148e-04 0.207431 0.835674
rs115986297 365993.00 112.431000 4.21113e-05 4.15652e-05 1.013140 0.310995
rs148061526 158213.00 41.003900 -3.75454e-05 4.87798e-05 -0.769691 0.441484
rs187222323 1913.18 0.000000 -3.28565e-04 4.10527e-04 -0.800348 0.423510
rs610570 304137.00 80.078400 -4.39023e-05 4.16094e-05 -1.055110 0.291378

str(gwas)

‘data.frame’: 9999 obs. of 7 variables:
$ rsid : Factor w/ 9990 levels “11:38214379_T_C”,..: 743 2728 1038 3234 4393 6971 8601 5960 1441 6826 …
$ AC : num 2766 4442 365993 158213 1913 …
$ ytx : num 0.0549 1.4863 112.431 41.0039 0 …
$ beta : num -2.79e-04 5.40e-05 4.21e-05 -3.75e-05 -3.29e-04 …
$

se : num 3.33e-04 2.60e-04 4.16e-05 4.88e-05 4.11e-04 …
$ tstat: num -0.837 0.207 1.013 -0.77 -0.8 …
$ pval : num 0.403 0.836 0.311 0.441 0.424 …

更改增加資料框列名:

1.1 使用reshape包(package):

library(reshape)
gwas <- rename(gwas, c(rsid='rs', beta='B', pval='P'))

1.2 使用names()函式:

gwas8 <- gwas[1:10,2:4]
names(gwas8)<-c('rs','N','AC')

1.3 或者:

fix(gwas)

*此方法適合手動更改

2.1 增加一列,使用data.frame()函式

P_1 <- gwas$P
gwas7 <- data.frame(gwas, P_1)

2.2 使用transform()函式:

gwas8 <- transform(gwas, total=gwas$AC+gwas$ytx)

資料框變數的篩選

索引篩選的幾種格式

可通過 正整數,負整數,邏輯值,變數名稱 來進行索引篩選:

gwas1 <- gwas[1:9998, 1:3]
gwas2 <- gwas[-9999, 1:3]
gwas3 <- gwas[-9999, c('rs', 'AC', 'ytx')]
gwas4 <- gwas[1:9998, c(T,T,T,F,F,F,F)]
gwas_t <- gwas[1:3];gwas5 <- gwas_t[1:9998,]
myvars <- names(gwas) %in% c('B','se','tstat','P');gwas6 <- gwas[1:9998,!myvars]

幾種方式篩選出的gwas1,gwas2,gwas3,gwas4,gwas5,gwas6資料框都是一個數據框。

篩選觀測(observation)的方式

1.數字索引篩選:

gwas_subset1 <- gwas[1:300,]

2.使用which()函式和條件表示式

gwas_subset2 <- gwas[which(gwas$nCompleteSamples > 300000 & gwas$P<0.05),]

3.使用subset()函式

gwas_subset3 <- subset(gwas, gwas$nCompleteSamples > 300000 & gwas$P<0.05, select = rs:P)

*推薦使用最簡便的subset()函式,這個函式可以同時選擇合適的觀測和變數,非常方便。

資料框的合併

資料框列的合併

1.使用merge()函式:

df1 <- data.frame(rs=gwas$rs, note=c(0))
gwas9 <- merge(gwas, df1, by='rs')

2.使用cbind()函式:

df1 <- data.frame(rs=gwas$rs, note=c(0))
gwas10 <- cbind(gwas,df1)

資料框行的合併

使用rbind()函式:

df1 <- gwas[1:4999,]
df2 <- gwas[5000:9999,]
gwas10 <- rbind(df1,df2)

資料框的其他常用操作

排序

1.使用order()函式:

gwas11 <- gwas[order(gwas$P,gwas$tstat),]
gwas12 <- gwas[order(-gwas$P,-gwas$tstat,decreasing = T),]

gwas11和gwas12排序相同。
* sort() rank()函式也是排序相關函式,適用不同場景。

統計描述

1.nrow()函式:

nrow(gwas)

[1] 9999

2.ncol()函式:

ncol(gwas)

[1] 9

3.dim()函式:

dim(gwas)

[1] 9999 9