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

2020-04-02  本文已影响0人  超级无敌大蜗牛

重命名

语法: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(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
上一篇 下一篇

猜你喜欢

热点阅读