涉及编程的数据和代码都会放到 https://github.com/XSLiuLab/Workshop 推荐图书 《R for Data Science》[1] 《R 语言编程指南》 《R 实战》 其他推荐见...拓展表格 expand complete 分割和连接 separate separate_rows unite 数据导出 write_* data.table 与 base 数据导入 fread 数据导出...fwrite data.table 语法 dt[i, j, by] 数据过滤与合并等操作与 R 基础语法一致,也可以使用 tidyverse 处理 整数索引 逻辑索引 命名索引 进一步的学习参考小抄、...文档和《R 语言编程指南》 后几期主题 本期未讲述的内容???...正则表达式与字符串处理:base 与 stringr 列表处理与迭代计算:purrr 统计建模:stats 与 broom 绘图:graphics 与 ggplot2 函数编程:apply家族和purrr
/articles/10.1186/s40164-021-00200-x s2 summarise(n=n()) |> mutate(n = case_when(n > 3 ~ "3",...T ~ as.character(n) )) |> ungroup() |> group_by(gene_symbol,n) |> summarise...,所以和原图还是有差别的。...这个附件也不像常见的几个软件的结果,应该是作者修改过的,所以也没办法直接用技能树的方法转换为maf。 s2 <- data.table::fread(".
今天的推文我们试着复现一下论文中的Figure2b image.png 今天推文的主要知识点就是四个柱子,每个柱子单独配色,然后4个图例如何调整四个图例的前后顺序 数据的部分截图 image.png...(Phylum) %>% summarise(phylum_counts=n()) %>% ungroup() %>% mutate(group01=case_when( Phylum..."Actinobacteriota"))) -> df01 df01 image.png 以上代码需要单独运行四次 这里统计的和论文中的内容有些出入...(Class) %>% summarise(class_counts=n()) %>% ungroup() %>% mutate(group02=case_when( Class...(Order) %>% summarise(order_counts=n()) %>% ungroup() %>% mutate(group03=case_when( Order
接下来,我就为大家分享几个我在工作当中最常用来做数据分析用到的包,dplyr和data.table,我保证你get到这两个包后,就再也不想用R里面自带的基础包函数进行数据分析了!!...以上这段代码我们使用group_by和summarise的结合实现了对数据集分组分析,并进行统计量计算的一个功能。...官网上面有关于data.table包对于dplyr的提升和改进: ?...还是那句话,讲几个最常用的函数,就算你的数据量大到逆天,data.table跑起来都是游刃有余的。剩下的大家有什么特殊需求再去下载官方文档看就好啦!...data.table把我们刚刚用group_by和summarise组合才能实现的功能,直接在一句代码里面就实现了,而且代码的可读性和可扩展运用性非常强!
install_github('erocoar/ggpol') library(ggpol) 导入数据 df <- read_tsv("data.xls") 数据清洗 results % group_by...%>% # 解除分组 unite(col = "status_gender", gender, status, sep = "_") %>% # 将性别和选举状态合并成一个新的列 pivot_wider...uncount(count) %>% # 根据count列的值,将行复制相应的次数 group_by(constituency, gender) %>% mutate(y = sequence...status == "notelected" ~ "not elected"), gender_label = case_when...gender == "male" ~ "Male candidates"), dominant_gender = case_when
(参考来源:R高效数据处理包dplyr和data.table,你选哪个?) ?...()函数设置 setkey(dt,a) setkey(DT, colA, colB),可以使得检索和分组更加快速。...,而data.table是setorder函数,同时降序的方式。...DT数据集按照x分组,然后计算v变量的和、最小值、最大值。 (2)dplyr函数利用%>%(链式操作)来改进: 链式操作是啥意思呢?...dplyr和data.table,你选哪个?
关于dplyr的基本操作我已经写过很多笔记了,不再赘述,这篇文章重点介绍 dplyr 的一个函数 do() 的用法。...与data.table类似,dplyr也提供了do()函数来对每组数据进行任意操作。 例如将diamonds按cut分组,每组都按log(price) ~ carat拟合一个线性模型。...和data.table不同的是,我们需要为操作指定一个名称,以便将结果存储在列中。而且do()表达式不能直接在分组数据的语义下计算 ,我们需要使用.来表示数据。...data("diamonds", package = "ggplot2") models = diamonds %>% group_by(cut) %>% do(lmod = lm(...假如我们需要分析toy_tests数据,要对每种产品的质量和耐久性进行汇总。如果只需要样本数最多的3个测试记录,并且每个产品的质量和耐久性是经样本数加权的平均数,下面是做法。
代码 代码来自《r-data-science-quick-reference-master》的内容。 dplyr包的使用例子。...----------------------------------- df <- tibble(x = rnorm(100)) df %>% mutate( x_category = case_when...----------------------------------------------------------------------- classify <- function(x) { case_when...mean_income ) ) %>% spread(key = "year", value = "mean_income") 温馨提示: 第一步:运行一边代码,掌握相应的包和函数使用...第二步:迁移到自己的数据集,进行应用
FigureS3b 前提是已经通过分析确定了哪些基因存在共线性,现在想用ggplot2来作图 构造数据 (基因长度和基因间区的长度并没有按照真实比例来,论文中是否是按照真实比例来画的暂时没有看明白)...用来画基因的数据 从前向后 基因的起始位置 纵坐标 基因名 物种名 基因方向 基因类别 用来画共线性的数据 这个是手动整理的,如何用代码根据第一个数据得到这个数据暂时还没有想明白 作图代码 library...gggenes) library(ggforce) dat01<-read_excel("2024.data/20240618/dat01.xlsx") dat01 %>% mutate(X1=case_when...= "species03" ~ X1 + 10, X5 == "species04" ~ X1 + 5, X5 == "species05" ~ X1 + 13, ), X2=case_when...(X5) %>% summarise(min=min(X1), max=min(X2)) dat01 %>% group_by(X5) %>% summarise
tidyverse作为R语言数据分析中的瑞士军刀,非常好用,一个小小的缺点就是速度慢,data.table速度快,所以他们团队又开发了dtplyr,加快运行速度。...不过今天要介绍的是另一个,基于data.table的tidyverse:tidytable。 使用起来非常简单,只需要在原有函数后面加一个.即可!!!...2 5 ## 2 2 5 a 4 7 ## 3 3 6 b 6 9 分组汇总 和group_by...语法 借助dt()函数实现对data.table语法的支持。...,详细支持的函数列表大家可以在这里[1]找到。
(state_or_prov %in% c("Alaska", "Hawaii", "Puerto Rico"))) %>% # 筛选出除阿拉斯加、夏威夷和波多黎各外的州或省 group_by(state_or_prov...(combined$text, "[[:punct:]]", "") # 移除所有的标点符号 加载地图数据 state_info % group_by(region) %>% summarise(min_long = min(long),max_long =...long = min_long + range_long/2, lat = min_lat + range_lat/2) %>% mutate(long= case_when...~ long -1, region == "virginia" ~ long + 1,RUE ~ long)) %>% mutate(lat = case_when
lapply函数可以对每组数据都执行同样的算法。Split和lapply两者结合可以实现本案例。 2.由于分组后的数据可以复用,因此本算法比aggregate性能更高。...3、Lapply 是 apply 函数族 Lapply 是 apply 函数族的一份子,类似的函数还有 sapply 和 tapply。...")],function(x) sum(x)) 4、subset()函数 利用subset()函数进行访问和选取数据框的数据更为灵活,subset函数将满足条件的向量、矩阵和数据框按子集的方式返回。...(参考来源:R高效数据处理包dplyr和data.table,你选哪个?) ?...data.table比较简洁一步搞定,dplyr花了两步,不过也dplyr也可以通过%>%来实现一步搞定。%>%的功能是用于实现将一个函数的输出传递给下一个函数的第一个参数。
2.2版本中,针对Series对象新增了case_when()方法,用于实现类似SQL中经典的CASE WHEN语句功能,今天的文章中,我们就来get其具体使用方法~ 2 pandas中的case_when...()新方法 首先请确保你的pandas版本大于等于2.2,在确保Python版本大于等于3.9的前提下,终端执行下列命令安装最新版本的pandas: pip install pandas -U 2.1...case_when()的使用 case_when()作为Series对象的方法,其参数非常简单只有一个caselist,用于定义条件映射规则,格式如[(条件1, 替代值1), (条件2, 替代值2)...,最基础的用法下,每个条件为与目标Series长度相等的bool值序列,譬如下面的例子: 更灵活的方式,是将条件写作可执行函数,譬如lambda函数,进而引用自身实现灵活的条件判断: 函数式条件...,在针对数据框进行链式分析的过程中,可以很灵活的基于上一步的临时计算状态,进行条件赋值操作,譬如(示例数据及代码见文章开头仓库地址): 更多有关case_when()方法的介绍,请移步官方文档:https
library(ggflags) library(ggtext) 导入数据 wins <- read_csv("data.csv") 数据清洗 wins_by_cat % group_by...(Nationality, Category) %>% # 按国籍和类别分组 summarise(cat_total = n()) %>% # 计算每组的总数 group_by(Category...cat_total)) %>% # 排序 filter(rank % # 只保留前10名 ungroup() %>% # 取消分组 mutate(Nationality = case_when...element_blank(), panel.grid.minor = element_blank(), plot.margin = margin(0, 0, 0, 0)) 构建分组条带和标签数据...seq_id) - empty_nrow) %>% rowwise() %>% mutate(title = mean(c(start, end)), printname = case_when
1 简介 大家好我是费老师,pandas在前不久更新的2.2版本中,针对Series对象新增了case_when()方法,用于实现类似SQL中经典的CASE WHEN语句功能,今天的文章中,我们就来get...其具体使用方法~ 2 pandas中的case_when()新方法 首先请确保你的pandas版本大于等于2.2,在确保Python版本大于等于3.9的前提下,终端执行下列命令安装最新版本的pandas...: pip install pandas -U 2.1 case_when()的使用 case_when()作为Series对象的方法,其参数非常简单只有一个caselist,用于定义条件映射规则,格式如...[(条件1, 替代值1), (条件2, 替代值2), ...]...,最基础的用法下,每个条件为与目标Series长度相等的bool值序列,譬如下面的例子: 更灵活的方式,是将条件写作可执行函数,譬如lambda函数,进而引用自身实现灵活的条件判断: 函数式条件,在针对数据框进行
t() %>% as.data.frame() group % set_colnames(c("sample","group")) 定义函数计算多样性指数...Tukey) dt % as.data.frame() %>% set_colnames(c("group","name","value")) %>% group_by...,aov_data,by=c("group","name")) text % group_by(group,name) %>% summarise(max(value)) %>% arrange...,df2 %>% select(1,2,6),by=c("group","name")) %>% distinct() %>% mutate(value=case_when(name =="ACE...,但显著性标记是不区分图形的因此在此通过上面的代码构建箱线图的数据,由于还存在离群值因此做了过多的处理,各位观众老爷细细品味 ❞ 定义绘图函数 make_plot <- function(data,x,
分组操作 隐藏、移动某些列 列分组操作 合并列 & 添加标签 使用格式化功能 对齐方式及风格 主体的字体美化 标题和副标题 添加脚注 library(gt) library(dplyr) glimpse...系列,比如使用group_by()函数: tab % group_by(ctry_origin) %>% arrange(mfr, desc(msrp)) %>%...union()函数功能差不多。...可以使用text_transform()函数继续美化cell_body部分的字体。...,通过2篇推文,相信你已经了解了gt包的优势和强项,以及和之前介绍的comparegroups、tableone、table1的区别!
参考资料链接 https://github.com/cxli233/SimpleTidy_GeneCoEx/tree/v1.0.1 提供完整的示例数据和代码,非常好的学习材料 做基因共表达比较常用的是...接下来的内容我重复一下资料中利用表达量数据做PCA的内容 代码 setwd("data/20221012/") list.files() #library(data.table) library(...Name`, `Sample Name`), by = "Run") head(PCA_coord) PCA_coord % mutate(stage = case_when...) PCA_by_stage library(patchwork) PCA_by_method+PCA_by_tissue+PCA_by_tissue image.png 以上用到的代码和示例数据都可以在推文开头提到链接里找到...上面的代码有一步是对TPM值 加1然后取log10,他的实现方式是先将宽格式数据转换为长格式,然后把取log10后的长格式再转换为宽格式,这里我没能还可以借助mutate_at()函数 Exp_table
ggtext) library(ggrepel) library(camcorder) 导入数据 df <- read_csv('data.csv') 数据清洗 cent_bee % group_by...pp_df # 包含x, y坐标,半径r,以及cent_bee数据框中的其他相关列 pp_df <- data.frame( x = pp$data[[1]]$x, y = pp$data[[...调整点的位置 # 使用circleRepelLayout函数调整点的位置,以避免重叠 pp_repel <- circleRepelLayout(pp_df, wrap = FALSE, sizetype...= "area") # 使用circleLayoutVertices函数获取调整后的点的坐标 pp_repel_out <- circleLayoutVertices(pp_repel$layout)...数据整合 pp_plot % left_join(pp_df, by = "id") %>% mutate(x = x.x,y = y.x,color = case_when
然后根据自己掌握的现状选择最熟练的一套,随着时间的推移慢慢发现现有工具组合的不足,开始尝试往更加高效、简介的工具迁移,这样以需求为推动力的技能升级和迁移更为彻底和明确。...可怜的机器呀,内存和磁盘要撑爆了~ 使用data.table内的I/O函数进行导入: rm(list=ls()) gc() library("data.table") system.time(...dplyr::fliter() %>% select() %>% group_by() %>% summarize() 虽然可以借助管道函数进行代码优化,但是仍然无法与data.table的简洁想抗衡。...使用fread函数导入之后便会自动转化为data.table对象,这是data.table所特有的高性能数据对象,同时继承了data.frame传统数据框类,也意味着他能囊括很多数据框的方法和函数调用。...当整列和聚合的单值同时输出时,可以支持自动补齐操作。 当聚合函数与data.table中的分组参数一起使用时,data.table的真正威力才逐渐显露。 mydata[,.
领取专属 10元无门槛券
手把手带您无忧上云