美文网首页
初识R语言—重命名和数据组合

初识R语言—重命名和数据组合

作者: 超级无敌大蜗牛 | 来源:发表于2020-04-02 18:30 被阅读0次

    重命名

    • names
      R自带
      使用后直接修改源数据
    语法:names(dataframe)[index]
                  数据框, 索引号(第几列)
    > data
                       mpg cyl disp  hp drat    wt  qsec vs am gear carb
    Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
    Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
    
    > names(data)[1] <- "test"
    > data
                      test cyl disp  hp drat    wt  qsec vs am gear carb
    Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
    Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
    
    • rename
      reshape包
      不修改源数据
    ##语法: rename(dataframe, c(oldname="newname"))
    library(reshape)
    rename(data, c(mpg="newmpg")
    ##原来数据data的列名并没有发生改变,如果想要将修改的列名保存到data,做下列操作:
    data <- rename(data, c(mpg="newmpg")
    

    数据组合

    1.paste函数
    paste(v1,v2,sep="")
    拼接对象是向量

    v1 <- c(10,20,30)
    v2 <- "g"
    v <- paste(v1,v2, sep="")
    

    2.rbind(df1,df2)行合并
    cbind(df1,df2)列合并

    3.merge按共有变量进行合并(匹配)
    merge(x,y,by=intersect(names(x),names(y)),by.x=by, by.y=y, all =FALSE, all.x=FALSE,all.y=FALSE,...)

    > df1
      ID1 gender
    1 101      F
    2 102      M
    3 109      M
    4 100      F
    > df2
      ID2 math Chinese
    1 101   89      56
    2 102   56      78
    3 106   43      90
    
    > ##公有的变量(组合键)名称不一样的做法
    > df <- merge(df1,df2,by.x = "ID1",by.y = "ID2")
    > df
      ID1 gender math Chinese
    1 101      F   89      56
    2 102      M   56      78
    
    > ##公有的变量名称一样的做法
    > a <- rename(df1,c(ID1="ID")) ##先把df1和df2的第一列名称搞成一样
    > a
       ID gender
    1 101      F
    2 102      M
    3 109      M
    4 100      F
    > b <- rename(df2,c(ID2="ID"))##先把df1和df2的第一列名称搞成一样
    > b
       ID math Chinese
    1 101   89      56
    2 102   56      78
    3 106   43      90
    > df <- merge(a,b,by="ID")
    > df
       ID gender math Chinese
    1 101      F   89      56
    2 102      M   56      78
    
    ##希望呈现的结果
    ##1、第一个数据a的数据全部保留,第二个数据b只保留与a匹配的数据,其余均排除掉,以NA呈现
    > df <- merge(a,b,by="ID",all.x = T)
    > df
       ID gender math Chinese
    1 100      F   NA      NA
    2 101      F   89      56
    3 102      M   56      78
    4 109      M   NA      NA
    
    ##2、b的数据全部保留,a只保留与b匹配的数据,其余均排除,以NA呈现
    > df <- merge(a,b,by="ID",all.y = T)
    > df
       ID gender math Chinese
    1 101      F   89      56
    2 102      M   56      78
    3 106   <NA>   43      90
    
    ##3、a、b的数据全部保留,无法匹配的项以NA呈现
    > df <- merge(a,b,by="ID",all = T)
    > df
       ID gender math Chinese
    1 100      F   NA      NA
    2 101      F   89      56
    3 102      M   56      78
    4 106   <NA>   43      90
    5 109      M   NA      NA

    相关文章

      网友评论

          本文标题:初识R语言—重命名和数据组合

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