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 …
$
$ 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