以下给出数据框常用的基本操作,尽量全面的给出一个完整的数据操作:
目录
- 数据框概览
- 更改增加数据框列名
- 数据框变量(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