-
2021-08-24 17:20:37更多相关内容
-
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")
-
R 中merge()函数匹配数据或根据一列或多列来合并两个数据框
2019-10-06 16:39:38写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
-
R语言对多个数据框的相同列进行操作
2020-11-21 13:29:26其中每一个数据框都包括三列,如下: 接下来,我想通过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")
bin number of transcript group (-0.001,0.1] 9710 1 (0.1,1] 5505 1 (1,10] 4540 1 (10,100] 2200 1 (100,Inf] 315 1 (-0.001,0.1] 9882 2 (0.1,1] 5575 2 (1,10] 5485 2 (10,100] 2624 2 (100,Inf] 343 2 (-0.001,0.1] 3271 3 (0.1,1] 2157 3 (1,10] 2359 3 (10,100] 1816 3 (100,Inf] 245 3 (-0.001,0.1] 3807 4 (0.1,1] 2163 4 (1,10] 2110 4 (10,100] 1703 4 (100,Inf] 320 4 (-0.001,0.1] 6797 5 (0.1,1] 4762 5 (1,10] 4084 5 (10,100] 1964 5 (100,Inf] 285 5 接下来就可以直接拿来画图了,因为数据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())
如果大家有更好的前期处理数据的方法,一定要留言讨论啊!
-
r语言怎么看两个数据框同一人是否吃了同一种药,按照身份证号匹配
2021-08-19 22:45:02每个人可能吃了很多药,并按照分隔符分开了,字符型变量好难啊,求助大神 -
r语言中which的使用_大数据分析R语言RStudio使用教程
2020-10-21 23:00:47RStudio是用于R编程的开源工具... 在此大数据分析R语言RStudio使用教程文章中,我们将介绍RStudio免费版本的一些最佳功能:RStudio Desktop。我们收集了一些RStudio的重要技巧,窍门和快捷方式,可快速将您变成RStu... -
R语言数据表匹配和拼接-merge函数
2019-05-15 20:44:06R中的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:36R语言使用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:18R中的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:23Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的。 Data Frame每一列有列名,每一行也可以指定行名。如果不指定行名,那么... -
R语言笔记3:提取R对象的子集,模糊匹配和移除数据框缺失值
2018-02-28 10:07:15Subsetting R Objects 取子集的三种基本方法 [ :“单方括号”返回的对象和原来相同,如向量的子集还是向量;也可用于在对象中选择多个元素 ...$ :“美元符号”是提取有名字的列表或数据框中的一个元素 ... -
R语言入门-字段匹配(连接)-- merge
2022-01-30 10:46:42R语言merge函数实现连接 -
R因子R数据框以及R数据重塑
2021-10-03 19:07:59因子用于存储不同类别的数据类型,R语言创建因子使用factor()函数,向量作为输入函数,factor()函数语法格式: factor(x=character(),levels,labels=levels,exclude=NA,ordered=is.ordered(x),nmax=NA) 参数说明... -
使用R进行数据匹配的方法
2017-08-01 14:12:00R中的merge函数类似于Excel中的Vlookup,可以实现对两个数据表进行匹配和拼接的功能。与Excel不同之处在于merge函数有4种匹配拼接模式,分别为inner,left,right和outer模式。 其中inner为默认的匹配模式。本篇文章... -
【R语言】数据合并(连接)-merge、data.table、dplry
2018-05-25 18:26:55实际操作中,我们经常需要引入其他表中的列,即将其他表中列加入到表中,需要把两个或者更多的表合并成一个,R语言中有几种常用的几个合并函数。这里主要介绍merge()函数、data.table包以及dplyr包中的合并数据方法... -
合并数据框
2021-09-20 21:37:38R语言里两个数据框也可以用merge()函数合并在一起。 假设数据d1和d2有一个或多个同名的列,利用merge(d1,d2)可以合并这两个数据框,如下: d1=data.frame(kids=c("Jack","Jill","Jillian","John"),states=c("CA",... -
R合并数据框有重复匹配时只保留第一行
2019-06-23 13:55:00合并数据框有重复匹配时通常会返回所有的匹配,如何只保留匹配的第一行呢?其实这个需求也很常见。如芯片探针ID和基因ID往往多对一,要合并ID对应矩阵和芯片表达矩阵时。 数据例子 data = data.frame(id = c(1,2,3,4... -
R语言 tidyverse 之数据处理:dplyr (下)
2021-08-03 11:36:50这一节我们使用 nycflights13 数据集,这个数据集中包含了纽约市 336776 次航班的信息,使用前先安装一下:install.packages(‘nycflights13’)。 library(dplyr) library(nycflights13) # flights 数据框 slice_... -
r 函数返回多个值_R语言之数据处理(二)
2020-11-21 00:14:32在R语言中,常见的多维数据的存储形式有矩阵、数据框、列表和数组等,其中向量是特殊的矩阵,矩阵是特殊的数据框,数据框又是特殊的数组。对于不同的数据形式,有对应的不同方法处理,下面会分别介绍apply类函数、... -
R语言dplyr包数据集拼接合并
2020-06-27 19:11:50R语言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语言
2021-07-31 05:40:58原标题: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:401、merge(a,b),纯粹地把两个数据集合在一起,没有沟通a、b数据集的by,这样出现的数据很多,相当于a*b条数据; 2、merge函数是匹配到a,b数据集的并,都有的才匹配出来,如果a、b数据集ID不同,这个函数不够用。 #... -
r语言 转录本结构及丰度_【R语言】数据结构Ⅱ—列表,数据框,因子
2020-11-22 08:31:11例如,用R 拟合一个线性回归模型,其返回结果就是一个列表,其中包含了线性回归的详细结果,如线性回归系数(数值向量)、残差(数值向量)、QR 分解(包含一个矩阵和其他对象的列表)等。因为这些结果全都被打包到... -
R语言批量字符替换、批量数值比较并赋值
2022-03-14 13:12:49R语言如何批量替换字符和数值,批量比较数值大小并重新赋值~ -
《R语言数据挖掘:实用项目解析》——1.4 排序与合并数据框
2017-07-03 09:54:00本节书摘来自华章计算机《R语言数据挖掘:实用项目解析》一书中的第1章,第1.4节,作者[印度]普拉迪帕塔·米什拉(Pradeepta Mishra...它们的操作对象可以是单一向量或者是一个数据框,还可以是一个矩阵。R语言中... -
R语言merge函数-数据表匹配和拼接
2019-10-26 19:18:56merge 连接两个数据 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:56R语言筛选V2和V3两列中,元素的重复次数超过2次以上的数据,其中2和3的重复次数超过3次,需要筛选出来。筛选不同门店的数量,进行数据计数和统计。