美文网首页RNA-seq
R基本数据管理--数据集合并、子集的提取以及随机抽样函数

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

作者: 天秤座的机器狗 | 来源:发表于2018-08-09 20:59 被阅读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
    
    
    
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/zpthbftx.html