R语言-merge和rbind

rbind

使用方式 
合并两个数据集,要求两个数据集的列数相等:

rbind(parameter1,parameter2)
  • 1
  • 1

合并多个数据集,各个数据集的列数相等:

rbind(parameter1,parameter2,...,parametern)
  • 1
  • 1

从数据集中提取数据

test <- rbind()
for (i in 1:length(s_5))
{
     test <- rbind(test,data[s_5[i],])
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

merge

merge函数的声明:

merge(x, y, by = intersect(names(x), names(y)),
      by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
      sort = TRUE, suffixes = c(".x",".y"),
      incomparables = NULL, ...)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

merge函数参数的说明:

参数 说明
x,y 用于合并的两个数据框
by,by.x,by.y 指定依据哪些行合并数据框,默认值为相同列名的列.
all,all.x,all.y 指定x和y的行是否应该全在输出文件.
sort by指定的列是否要排序.
suffixes 指定除by外相同列名的后缀.
incomparables 指定by中哪些单元不进行合并.

例子:

w1:
NAME    SCHOOL    CLASS    ENGLISH
A    S1    10    85
B    S2    5    50
A    S1    4    90
A    S1    11    90
C    S1    1    12

w2:
NAME    SCHOOL    CLASS    MATHS    ENGLISH
A    S3    5    80    88
B    S2    5    89    81
C    S1    1    55    32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

按照NAME, SCHOOL, CLASS合并w1和w2:

merge(w1, w2, all = T)

  NAME SCHOOL CLASS ENGLISH MATHS
1    A     S1     4      90    NA
2    A     S1    10      85    NA
3    A     S1    11      90    NA
4    A     S3     5      88    80
5    B     S2     5      50    NA
6    B     S2     5      81    89
7    C     S1     1      12    NA
8    C     S1     1      32    55

merge(w1, w2, by = c("NAME", "SCHOOL", "CLASS"), all = T)

  NAME SCHOOL CLASS ENGLISH.x MATHS ENGLISH.y
    A     S1     4        90    NA        NA
    A     S1    10        85    NA        NA
    A     S1    11        90    NA        NA
    A     S3     5        NA    80        88
    B     S2     5        50    89        81
    C     S1     1        12    55        32

merge(w1, w2, all = T, incomparables = "A")
Error in merge.data.frame(w1, w2, all = T, incomparables = "A") :
  ‘incomparables‘ is supported only for merging on a single column

merge(w1, w2, all = T, by = "NAME", incomparables = "A")
  NAME SCHOOL.x CLASS.x ENGLISH.x SCHOOL.y CLASS.y MATHS ENGLISH.y
    A       S1      10        85     <NA>      NA    NA        NA
    A       S1       4        90     <NA>      NA    NA        NA
    A       S1      11        90     <NA>      NA    NA        NA
    A     <NA>      NA        NA       S3       5    80        88
    B       S2       5        50       S2       5    89        81
    C       S1       1        12       S1       1    55        32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34


横向合并

ID<-c(1,2,3,4)
name<-c("Jim","Tony","Lisa","Tom")
score<-c(89,22,78,78)
student1<-data.frame(ID,name)
student2<-data.frame(ID,score)
total_student<-merge(student1,student2,by="ID")
total_student
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

当然merge也可以使用纵向合并

merge(data1,dadta2,all=T)
  • 1
  • 1

纵向合并

ID<-c(1,2,3)
name<-c("Jame","Kevin","Sunny")
student1<-data.frame(ID,name)
ID<-c(4,5,6)
name<-c("Sun","Frame","Eric")
student2<-data.frame(ID,name)
total<-rbind(student1,student2)
total
时间: 2024-12-28 18:00:42

R语言-merge和rbind的相关文章

R语言merge数据框并写入文件

text1 <- read.csv("file1.txt", header = T) text2 <- read.delim("file2.txt", heade=T) 两个文件有共同的列名 Name 如果没有就用 colnames(text1) <- c("Name", "OtherCol") 重命名 data_1 <- merge(text1, text2, by = "Name"

R语言数据合并使用merge数据追加使用rbind和cbind

R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y = ,all = ) 函数. #合并ID<-c(1,2,3,4)name<-c("A","B","C","D")score<-c(60,70,80,90)student1<-data.frame(ID,na

R语言之merge函数案例

R语言的merge函数可以实现类似SQL的有点类似 left join right join 或者类似union的效果. df1 = data.frame(CustomerId=c(1:6),Product=c(rep("Toaster",3),rep("Radio",3))) > df2 = data.frame(CustomerId=c(2,4,6,7),State=c(rep("Alabama",3),rep("Ohio&q

【数据分析 R语言实战】学习笔记 第三章 数据预处理 (下)

3.3缺失值处理 R中缺失值以NA表示,判断数据是否存在缺失值的函数有两个,最基本的函数是is.na()它可以应用于向量.数据框等多种对象,返回逻辑值. > attach(data) The following objects are masked fromdata (pos = 3): city, price, salary > data$salary=replace(salary,salary>5,NA) > is.na(salary) [1] FALSEFALSE TRUE

R入门&lt;三&gt;-R语言实战第4章基本数据管理摘要

入门书籍:R语言实战 进度:1-4章 摘要: 1)实用的包 forecast:用于做时间序列预测的,有auto.arima函数 RODBC:可以用来读取excel文件.但据说R对csv格式适应更加良好,相应的导入导出均较为方便(read.table, write等) reshape:目前用到rename函数,可以方便的对数据变量重命名 fCalendar:在日期输入处提及,据说对日期运算有奇效,但无具体示例.同理如lubridate sqldf:在数据选取处提及,可代替subset以及各种whe

R语言编程艺术(2)R中的数据结构

本文对应<R语言编程艺术>第2章:向量:第3章:矩阵和数组:第4章:列表:第5章:数据框:第6章:因子和表 ========================================================================= R语言最基本的数据类型就是向量(vector),单个数值和矩阵都是向量的一种特例. 声明:R中不需要声明变量,但是注意函数式语言的特性,如果读写向量中的元素时,R事先不知道对象是向量的话,则函数没有执行的对象.如下代码是无法工作的: y[1]

R语言︱ 数据库SQL-R连接与SQL语句执行(RODBC、sqldf包)

数据库是极其重要的R语言数据导入源数据之地,读入包有sqldf.RODBC等.跟SQL server相连有RODBC,跟mySQL链接的有RMySQL.但是在R里面,回传文本会出现截断的情况,这一情况可把我弄得有点手足无措. 一.数据库读入--RODBC包 CRAN 里面的包 RODBC 提供了 ODBC的访问接口: odbcConnect 或 odbcDriverConnect (在Windows图形化界面下,可以通过对话框选择数据库) 可以打开一个连接,返回一个用于随后数据库访问的控制(ha

Machine Learning for hackers读书笔记(一)使用R语言

#使用数据:UFO数据 #读入数据,该文件以制表符分隔,因此使用read.delim,参数sep设置分隔符为\t #所有的read函数都把string读成factor类型,这个类型用于表示分类变量,因此将stringsAsFactors设置为False #header=F表示文件中并没有表头 #na.string='',表示把空元素设置为R中的特殊值NA,即将所有空元素读成NA ufo<-read.delim('ufo_awesome.tsv',sep='\t',stringsAsFactors

转载:R语言Data Frame数据框常用操作

Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可以指定行名.如果不指定行名,那么就是从1开始自增的Sequence来标识每一行. 初始化 使用data.frame函数就可以初始化一个Data Frame.比如我们要初始化一个student的Data Frame其中包含ID和Name还有Gender以及Birthdate,那么代码为: studen