RNA-seq

R基本数据管理--数据集合并、子集的提取以及随机抽样函数

2018-08-09  本文已影响167人  天秤座的机器狗
#R基本数据管理--数据集合并、子集的提取以及随机抽样函数

x <- matrix(c(1,2,3,4,5,6,7,8,9),nrow = 3,ncol=3)
x
#[,1] [,2] [,3]
#[1,]    1    4    7
#[2,]    2    5    8
#[3,]    3    6    9

y <- x

z <- cbind(x,y) #按列合并x和y两个数据集
z

# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]    1    4    7    1    4    7
#[2,]    2    5    8    2    5    8
#[3,]    3    6    9    3    6    9

a <- data.frame(k1 = c(NA,NA,3,4,5), k2 = c(1,NA,NA,4,5), data = 1:5)
a

#k1 k2 data
#1 NA  1    1
#2 NA NA    2
#3  3 NA    3
#4  4  4    4
#5  5  5    5

b <- data.frame(k1 = c(NA,2,NA,4,5), k2 = c(NA,NA,3,4,5), data = 1:5)
b

#k1 k2 data
#1 NA NA    1
#2  2 NA    2
#3 NA  3    3
#4  4  4    4
#5  5  5    5

c <- merge(a,b,by="k1") #merge 也是一种合并,但和cbind不同,如左,如果是按k1合并,则对a而言
                        #第一行,NA 1 1,中k1值是NA ,对应b能找到第一行和第3行,所以,c中3,4行的内容shi
                        # NA 1 1 NA 1     和  NA 1 1 3 3   前3列对应a。 1,4,5列对应b,以此类推。
c

#k1 k2.x data.x k2.y data.y
#1  4    4      4    4      4
#2  5    5      5    5      5
#3 NA    1      1   NA      1
#4 NA    1      1    3      3
#5 NA   NA      2   NA      1
#6 NA   NA      2    3      3


z1 <- rbind (x,y) #行合并
z1

#[,1] [,2] [,3]
#[1,]    1    4    7
#[2,]    2    5    8
#[3,]    3    6    9
#[4,]    1    4    7
#[5,]    2    5    8
#[6,]    3    6    9


#子集的提取

manager <- c(1,2,3,4,5)
date <- c("8/1/18","8/2/18","8/3/18","8/4/18","8/5/18")
country <-c("US","US","UK","UK","UK")
gender <- c("M","F","F","M","F") 
age <- c(32,45,25,39,99)
q1 <- c(5,3,3,3,2)
q2 <- c(4,5,5,3,2)
q3 <- c(5,2,5,4,1)
q4 <- c(5,5,5,NA,2)
q5 <- c(5,5,2,NA,1)

survey <- data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors = FALSE)


# manager   date country gender age q1 q2 q3 q4 q5
# 1       1 8/1/18      US      M  32  5  4  5  5  5
# 2       2 8/2/18      US      F  45  3  5  2  5  5
# 3       3 8/3/18      UK      F  25  3  5  5  5  2
# 4       4 8/4/18      UK      M  39  3  3  4 NA NA
# 5       5 8/5/18      UK      F  99  2  2  1  2  1


# ps:Rstudio 按ctrl+shift+C 可以多行注释

q <- survey[,6:10] #获取数据集中的6-10列
q
# q1 q2 q3 q4 q5
# 1  5  4  5  5  5
# 2  3  5  2  5  5
# 3  3  5  5  5  2
# 4  3  3  4 NA NA
# 5  2  2  1  2  1

x <- survey[,-2]  #删除第2列date列
x
# manager country gender age q1 q2 q3 q4 q5
# 1       1      US      M  32  5  4  5  5  5
# 2       2      US      F  45  3  5  2  5  5
# 3       3      UK      F  25  3  5  5  5  2
# 4       4      UK      M  39  3  3  4 NA NA
# 5       5      UK      F  99  2  2  1  2  1

newdata <- subset(survey,age>34|age<34,select = c(q1,q2,q3,q4)) #subset函数,对survey,选取age大于34或小于24,
                                                                #选取数据列是q1,q2,q3,q4
newdata

# q1 q2 q3 q4
# 1  5  4  5  5
# 2  3  5  2  5
# 3  3  5  5  5
# 4  3  3  4 NA
# 5  2  2  1  2



#随机抽样
# sample(x, size, replace = FALSE, prob = NULL)   x可以是任何​对象,
# size规定了从对象中抽出多少个数,size应该小于x的规模,否则会报错
# replace默认是F,表示每次​抽取后的数就不能在下一次被抽取;T表示抽取过的数可以继续拿来被抽取

mysample <- survey[sample(5,3,replace = FALSE),] #随机获取3行
mysample
# manager   date country gender age q1 q2 q3 q4 q5
# 2       2 8/2/18      US      F  45  3  5  2  5  5
# 5       5 8/5/18      UK      F  99  2  2  1  2  1
# 4       4 8/4/18      UK      M  39  3  3  4 NA NA



上一篇下一篇

猜你喜欢

热点阅读