精华内容
下载资源
问答
  • R语言处理数据——筛选两个文件中某列的相同元素
    千次阅读
    2021-08-24 17:20:37

    筛选两个文件中某列的相同元素

    library(dplyr)
    
    # 筛选type1的POS列,和type2两个文件中的BP列的相同元素
    position <- Reduce(intersect,list(type1chr$POS,type2chr$BP))
    # 查看相同元素的个数(去重复)
    length(unique(position))
    
    更多相关内容
  • R语言合并两个数据框

    千次阅读 2021-03-27 09:26:42
    首先两个数据 x y x <- read.csv("x.csv",header = T) y <- read.csv("y.csv",header = T) colnames(y)<- c("SYMBOL","GO_id")#所合并的列名必须一样# z <- merge(x, y, by="SYMBOL")

    首先两个数据

    x在这里插入图片描述
    y
    在这里插入图片描述

    x <- read.csv("x.csv",header = T)
    y <- read.csv("y.csv",header = T)
    colnames(y)<- c("SYMBOL","GO_id")#所合并的列名必须一样#
    z <-  merge(x, y, by="SYMBOL")
    
    

    在这里插入图片描述

    展开全文
  • 写merge()这函数呢,是因为它可以像excel里面的vlookup的功能,根据信息在某个数据框或矩阵内查找并获取你想要的信息。 1 先准备数据集 准备authors的数据框 和 authorN 数据框 authors <- data.frame( ## I(*...

    写merge()这个函数呢,是因为它可以像excel里面的vlookup的功能,根据信息在某个数据框或矩阵内查找并获取你想要的信息。

    1 先准备数据集

    准备authors的数据框 和 authorN 数据框

    authors <- data.frame(
      ## I(*) : use character columns of names to get sensible sort order
      surname = I(c("Tukey", "Venables", "Tierney", "Ripley", "McNeil")),
      nationality = c("US", "Australia", "US", "UK", "Australia"),
      deceased = c("yes", rep("no", 4))) <- data.frame(
      ## I(*) : use character columns of names to get sensible sort order
      surname = I(c("Tukey", "Venables", "Tierney", "Ripley", "McNeil")),
      nationality = c("US", "Australia", "US", "UK", "Australia"),
      deceased = c("yes", rep("no", 4)))
      #查看数据框
     authors
    

    在这里插入图片描述

    authorN <- within(authors, { name <- surname; rm(surname) })
    authorN
    

    在这里插入图片描述
    准备books数据框

    books <- data.frame(
      name = I(c("Tukey", "Venables", "Tierney",
                 "Ripley", "Ripley", "McNeil", "R Core")),
      title = c("Exploratory Data Analysis",
                "Modern Applied Statistics ...",
                "LISP-STAT",
                "Spatial Statistics", "Stochastic Simulation",
                "Interactive Data Analysis",
                "An Introduction to R"),
      other.author = c(NA, "Ripley", NA, NA, NA, NA,
                       "Venables & Smith"))
     books
    

    在这里插入图片描述

    2 直接merge合并两个数据anthorN和books

    (m0 <- merge(authorN, books))
    

    结果如下:
    在这里插入图片描述

    3 根据author中的surname这列,和books的name这一列来合并

    (m1 <- merge(authors, books, by.x = "surname", by.y = "name"))
    

    结果如下: 其实是以authors为基础,然后合并books数据框的

    在这里插入图片描述
    比如,将两者的位置调换过来,结果会是以books为基础,将authors数据框匹配过来的。

    m2 <- merge(books, authors, by.x = "name", by.y = "surname")
    m2
    

    在这里插入图片描述

    4 如果设置all = TRUE参数, 没有匹配出来的也会合并在一块,但是会用NA来表示。这里也会匹配所有项,返回的也会是两个数据框的所有合并数据。

    merge(authors, books, by.x = "surname", by.y = "name", all = TRUE)
    

    这里的结果就会比上面合并的时候多出来一行,第二行的 R Core,就是因为根据books数据框中的surname去匹配authors数据框中name,没有R Core,对应的就会显示NA。 这个有利于我们去匹配一些数据,而不丢失原有的数据框的内容。
    在这里插入图片描述

    5 根据多列来合并

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

    在这里插入图片描述

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

    在这里插入图片描述
    根据各个数据框中两列(k1、k2)来匹配两组数据框

    merge(x, y, by = c("k1","k2")) # NA's match
    

    在这里插入图片描述

    merge(x, y, by = "k1") # NA's match, so 6 rows
    

    在这里插入图片描述

    6 如果设置incomparables = NA的话,结果中不会出现有NA的数据

    merge(x, y, by = "k2", incomparables = NA) # 2 rows
    

    在这里插入图片描述

    展开全文
  • 其中每一个数据框都包括三列,如下: 接下来,我想通过cut()函数对V2列进行区间分割(如果大家有什么好的方法,欢迎讨论区留言) # 定义函数 map_list <- function(a){ library(tidyverse) for(i in seq_len...

    最近需要处理一批数据,每个数据框都具有相同的列名和列数,但是行数不同,所以就想着将数据框写入列表中,之后对列表进行循环操作,实现处理列表中数据框的列。由于能力不足,也折腾了一上午,所以在此记录下来。

    数据如下:
    文件夹中的文件
    在这里插入图片描述
    将文件夹中后缀名为novel.exp的文件导入R中,并创建列表

    library(tidyverse)
    a <- dir(pattern = "novel.exp") %>% lapply(function(x){read.table(x,header = F,sep = " ")})
    

    在这里插入图片描述
    其中每一个数据框都包括三列,如下:
    在这里插入图片描述
    接下来,我想通过cut()函数对V2列进行区间分割(如果大家有什么好的方法,欢迎讨论区留言

    # 定义函数
    map_list <- function(a){
      library(tidyverse)
      for(i in seq_len(length(a))){
        a[[i]] <- a[[i]] %>% mutate(bin = cut(V2,breaks = c(-0.001,0.1,1,10,100,Inf))) %>% # cut函数分割,将结果添加到数据框中
          count(bin,name = "number of transcript") %>% # 统计各个区间的频数
          mutate(group = rep(i,nrow(.))) # 定义分组,每个数据框是一组
      }
      do.call(rbind,a) # rbind函数合并列表中的数据框
    }
    #运行函数
    s <- map_list(a)
    

    最近通过不断地学习,掌握了一种更简单而且高效的方法,特地补充进来!

    # 首先构建一个包含数据框的列表
    od <- list(
      a = data.frame(x = c(1,2,3),y = c(2,3,4)),
      b = data.frame(x = 7:9,y = 8:10)
    )
    # 直接使用purrr包的modify函数
    library(purrr)
    modify(od,~ modify(.x,~.x -1))
    ##$a
    ##  x y
    ##1 0 1
    ##2 1 2
    ##3 2 3
    
    ##$b
    ##  x y
    ##1 6 7
    ##2 7 8
    ##3 8 9
    

    当然,这里只是一个简单的小例子,但是效率肯定能够提高不少,感兴趣可以使用system.time命令测试。

    结果如下:
    cut()函数将V2列分割成五个区间,统计频数之后列表中的每个数据框都是5 x 3,所以使用rbind()函数合并之后就产生了一个25 x 3 的数据框。这里的group是为了方便绘图加进去的。

    library(knitr)
    knitr::kable(s,align = "c")
    
    binnumber of transcriptgroup
    (-0.001,0.1]97101
    (0.1,1]55051
    (1,10]45401
    (10,100]22001
    (100,Inf]3151
    (-0.001,0.1]98822
    (0.1,1]55752
    (1,10]54852
    (10,100]26242
    (100,Inf]3432
    (-0.001,0.1]32713
    (0.1,1]21573
    (1,10]23593
    (10,100]18163
    (100,Inf]2453
    (-0.001,0.1]38074
    (0.1,1]21634
    (1,10]21104
    (10,100]17034
    (100,Inf]3204
    (-0.001,0.1]67975
    (0.1,1]47625
    (1,10]40845
    (10,100]19645
    (100,Inf]2855

    接下来就可以直接拿来画图了,因为数据tidy,所以做起图来容易很多。

    library(ggplot2)
    library(ggsci)
    s %>% ggplot(aes(factor(group),`number of transcript`,fill = factor(bin,levels = rev(unique(bin))))) +
      geom_bar(stat = "identity",width = .7) +
      scale_y_continuous(expand = c(0,0),limits = c(0,25000)) +
      theme_classic(base_line_size = .7) +
      scale_fill_jco() +
      theme(legend.title = element_blank(),
            axis.title.x = element_blank())
    

    在这里插入图片描述

    s %>% ggplot(aes(factor(group),`number of transcript`,fill = factor(bin,levels = rev(unique(bin))))) +
      geom_bar(stat = "identity",position = position_dodge(width = .9),width = .7,color = "black") +
      scale_y_continuous(expand = c(0,0),limits = c(0,11000)) +
      theme_classic(base_line_size = .7) +
      scale_fill_jco() +
      theme(legend.title = element_blank(),
            axis.title.x = element_blank())
    

    在这里插入图片描述


    如果大家有更好的前期处理数据的方法,一定要留言讨论啊!

    展开全文
  • 人可能吃了很多药,并按照分隔符分开了,字符型变量好难啊,求助大神
  • RStudio是用于R编程的开源工具... 在此大数据分析R语言RStudio使用教程文章中,我们将介绍RStudio免费版本的一些最佳功能:RStudio Desktop。我们收集了一些RStudio的重要技巧,窍门和快捷方式,可快速将您变成RStu...
  • R语言数据匹配和拼接-merge函数

    万次阅读 2019-05-15 20:44:06
    R中的merge函数类似于Excel中的Vlookup,可以实现对两个数据表进行匹配和拼接的功能。 merge(x, y, by = intersect(names(x), names(y)), by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all, sort = ...
  • R语言使用merge函数匹配数据(vlookup,join)

    万次阅读 多人点赞 2017-06-10 11:40:36
    R语言使用merge函数匹配数据(vlookup,join)
  • R 数据表模糊匹配

    2019-11-28 10:17:08
    想要把A表中num1与B表中PHN_NBR两个字段进行模糊匹配。num1为主表,但是问题两张表之间没有联系,怎么匹配呢? 思路:在A表中新生成一列ID,仅仅区别行数。循环A表与B表,当num1与PHN_NBR匹配成功后,在B表中新增加...
  • 使用R进行数据匹配

    万次阅读 2018-05-20 15:21:18
    R中的merge函数类似于Excel中的Vlookup,可以实现对两个数据表进行匹配和拼接的功能。与Excel不同之处在于merge函数有4种匹配拼接模式,分别为inner,left,right和outer模式。 其中inner为默认的匹配模式。本篇文章...
  • R语言--数据框

    2019-06-04 16:26:00
    创建数据框 因为数据框的本质是由一堆向量或者因子构成的列表,其中的每一个向量或者...我们可以通过data.frame()函数将相同长度的向量数据,构建一个数据框 name <- c("Jane","Maria","kangkang","Micheal",'...
  • R语言Data Frame数据框常用操作

    万次阅读 2016-12-12 16:43:23
    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每列可以是不同的数据类型,而Matrix是必须相同的。 Data Frame每一列有列名,每一行也可以指定行名。如果不指定行名,那么...
  • Subsetting R Objects 取子集的三种基本方法 [ :“单方括号”返回的对象和原来相同,如向量的子集还是向量;也可用于在对象中选择多元素 ...$ :“美元符号”是提取有名字的列表或数据框中的一元素 ...
  • R语言merge函数实现连接
  • 因子用于存储不同类别的数据类型,R语言创建因子使用factor()函数,向量作为输入函数,factor()函数语法格式: factor(x=character(),levels,labels=levels,exclude=NA,ordered=is.ordered(x),nmax=NA) 参数说明...
  • 使用R进行数据匹配的方法

    千次阅读 2017-08-01 14:12:00
    R中的merge函数类似于Excel中的Vlookup,可以实现对两个数据表进行匹配和拼接的功能。与Excel不同之处在于merge函数有4种匹配拼接模式,分别为inner,left,right和outer模式。 其中inner为默认的匹配模式。本篇文章...
  • 实际操作中,我们经常需要引入其他表中的列,即将其他表中列加入到表中,需要把两个或者更多的表合并成一个,R语言中有几种常用的几个合并函数。这里主要介绍merge()函数、data.table包以及dplyr包中的合并数据方法...
  • 合并数据框

    2021-09-20 21:37:38
    R语言两个数据框也可以用merge()函数合并在一起。 假设数据d1和d2有一个或多个同名的列,利用merge(d1,d2)可以合并这两个数据框,如下: d1=data.frame(kids=c("Jack","Jill","Jillian","John"),states=c("CA",...
  • 合并数据框有重复匹配时通常会返回所有的匹配,如何只保留匹配的第一行呢?其实这需求也很常见。如芯片探针ID和基因ID往往多对一,要合并ID对应矩阵和芯片表达矩阵时。 数据例子 data = data.frame(id = c(1,2,3,4...
  • 这一节我们使用 nycflights13 数据集,这个数据集中包含了纽约市 336776 次航班的信息,使用前先安装一下:install.packages(‘nycflights13’)。 library(dplyr) library(nycflights13) # flights 数据框 slice_...
  • R语言中,常见的多维数据的存储形式有矩阵、数据框、列表和数组等,其中向量是特殊的矩阵,矩阵是特殊的数据框数据框又是特殊的数组。对于不同的数据形式,有对应的不同方法处理,下面会分别介绍apply类函数、...
  • R语言dplyr包数据集拼接合并

    千次阅读 2020-06-27 19:11:50
    R语言dplyr包常用拼接合并函数有inner_join()、left_join()、right_join()、full_join()以及bind_rows()、bind_cols() inner_join inner_join是内连接的方式,选用的是一对一的连接方式.这种方式拼接简单,但如果某个...
  • R语言模糊匹配

    千次阅读 2020-11-13 11:10:36
    相同名词之间的匹配可以参考以前的一篇文章(利用R解决常见的数据匹配问题),但是现实中,由于数据来源不同,同一对象所表达的名称不同,但两个名称之间仍有一定的相似性,本文利用分词、投票的原理,将两个表格中...
  • 原标题:R语言数据实战 | 安装R语言 1、R的获取和安装获取和安装R很容易(这也是它“亲民”的地方),具体步骤如下:Step 1: 登陆R语言官方网站https://www.r-project.org,点击download R。 图1 R官方网站Step 2:在...
  • R语言数据集合并、数据增减、不等长合并

    万次阅读 多人点赞 2016-02-16 21:51:40
    1、merge(a,b),纯粹地把两个数据集合在一起,没有沟通a、b数据集的by,这样出现的数据很多,相当于a*b条数据; 2、merge函数是匹配到a,b数据集的并,都有的才匹配出来,如果a、b数据集ID不同,这个函数不够用。 #...
  • 例如,用R 拟合一线性回归模型,其返回结果就是一列表,其中包含了线性回归的详细结果,如线性回归系数(数值向量)、残差(数值向量)、QR 分解(包含一矩阵和其他对象的列表)等。因为这些结果全都被打包到...
  • R语言如何批量替换字符和数值,批量比较数值大小并重新赋值~
  • 本节书摘来自华章计算机《R语言数据挖掘:实用项目解析》一书中的第1章,第1.4节,作者[印度]普拉迪帕塔·米什拉(Pradeepta Mishra...它们的操作对象可以是单一向量或者是一个数据框,还可以是一个矩阵。R语言中...
  • 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, ...
  • R语言筛选两列中元素相同的重复数据

    万次阅读 多人点赞 2019-09-06 15:55:56
    R语言筛选V2和V3两列中,元素的重复次数超过2次以上的数据,其中2和3的重复次数超过3次,需要筛选出来。筛选不同门店的数量,进行数据计数和统计。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,239
精华内容 19,695
关键字:

r语言两个数据框匹配