前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言基础-数据清洗函数pivot_longer

R语言基础-数据清洗函数pivot_longer

原创
作者头像
小胡子刺猬的生信学习123
发布2022-07-10 12:12:52
6.5K0
发布2022-07-10 12:12:52
举报

发现自己的R语言的基础还是相对弱很多的,通过对前面的肺癌单细胞文章代码的学习,也在巩固自己的R基础。今天是需要对昨天test的icitools的R包进行自己的数据分析。

首先是需要对自己所查找的转录组的数据进行整理,由于给的example的数据比较少,因此发现手动也是可以的,很快,但是由于自己的转录组数据太多了,达到了几十个,因此自己需要再次借助R语言的函数转换。

第一个是我觉得很好的函数,是两组的数据合并的函数,一开始自己只会在excel上运用相关的公式,但是发现这个包的运行比excel更快,是dplyer下面的full_join.

今天说的是图和把excel里面的宽表变成长表的函数pivot_longer函数,是tidyr包下面的一个函数。

函数的网页讲解:https://tidyr.tidyverse.org/reference/pivot_longer.html

图片.png
图片.png
代码语言:javascript
复制
pivot_longer(
  data,
  cols,
  names_to = "name",
  names_prefix = NULL,
  names_sep = NULL,
  names_pattern = NULL,
  names_ptypes = NULL,
  names_transform = NULL,
  names_repair = "check_unique",
  values_to = "value",
  values_drop_na = FALSE,
  values_ptypes = NULL,
  values_transform = NULL,
  ...
)

参数

data:自己所需要转换的数据集

cols:<tidy-select> 要转换为更长格式的列。

names_to:一个字符向量,指定要根据存储在 cols 指定的数据的列名中的信息创建一个或多个新列。

如果长度为 0,或者如果提供了 NULL,则不会创建任何列。

如果长度为 1,将创建一个包含 cols 指定的列名的列。

如果长度>1,将创建多个列。在这种情况下,必须提供 names_sep 或 names_pattern 之一来指定如何拆分列名。您还可以利用两个额外的字符值:

NA 将丢弃列名的相应组件。

“.value”表示列名的相应组件定义了包含单元格值的输出列的名称,完全覆盖 values_to。

names_prefix:用于从每个变量名称的开头删除匹配文本的正则表达式。

names_sep, names_pattern:如果 names_to 包含多个值,则这些参数控制列名称的分解方式。

names_sep 采用与单独()相同的规范,可以是数字向量(指定要中断的位置),也可以是单个字符串(指定要拆分的正则表达式)。

names_pattern 采用与 extract() 相同的规范,一个包含匹配组 (()) 的正则表达式。

如果这些参数没有给您足够的控制权,请使用 pivot_longer_spec() 创建一个规范对象并根据需要手动处理。

names_ptypes, values_ptypes:(可选)列名-原型对的列表。或者,可以提供一个空原型,它将应用于所有列。原型(或简称 ptype)是一个零长度向量(如 integer() 或 numeric()),它定义了向量的类型、类和属性。如果您想确认创建的列是您期望的类型,请使用这些参数。请注意,如果要更改(而不是确认)特定列的类型,则应改用 names_transform 或 values_transform。

出于向后兼容的原因,提供 list() 被解释为与 NULL 相同,而不是在所有列上使用列表原型。预计这种情况在未来会有所改变。

names_transform, values_transform:(可选)列名-函数对的列表。或者,可以提供一个函数,该函数将应用于所有列。如果您需要更改特定列的类型,请使用这些参数。例如,names_transform = list(week = as.integer) 会将名为 week 的字符变量转换为整数。

如果未指定,则从 names_to 生成的列的类型将为字符,从 values_to 生成的变量的类型将是用于生成它们的输入列的常见类型。

names_repair:如果输出的列名无效会怎样?如果列重复,默认值“check_unique”会出错。使用“minimal”允许在输出中重复,或“unique”通过添加数字后缀来消除重复。有关更多选项,请参见 vctrs::vec_as_names()。

values_to:一个字符串,指定要从存储在单元格值中的数据创建的列的名称。如果 names_to 是包含特殊 .value 标记的字符,则该值将被忽略,并且 value 列的名称将从现有列名的一部分派生。

values_drop_na:如果为 TRUE,将删除 value_to 列中仅包含 NA 的行。这有效地将显式缺失值转换为隐式缺失值,并且通常仅应在数据中的缺失值由其结构创建时使用。

下面是官网上的一段example

代码语言:javascript
复制
# See vignette("pivot") for examples and explanation

# Simplest case where column names are character data
relig_income
#> # A tibble: 18 × 11
#>    religion      `<$10k` `$10-20k` `$20-30k` `$30-40k` `$40-50k` `$50-75k`
#>    <chr>           <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
#>  1 Agnostic           27        34        60        81        76       137
#>  2 Atheist            12        27        37        52        35        70
#>  3 Buddhist           27        21        30        34        33        58
#>  4 Catholic          418       617       732       670       638      1116
#>  5 Don’t know/r…      15        14        15        11        10        35
#>  6 Evangelical …     575       869      1064       982       881      1486
#>  7 Hindu               1         9         7         9        11        34
#>  8 Historically…     228       244       236       238       197       223
#>  9 Jehovah's Wi…      20        27        24        24        21        30
#> 10 Jewish             19        19        25        25        30        95
#> 11 Mainline Prot     289       495       619       655       651      1107
#> 12 Mormon             29        40        48        51        56       112
#> 13 Muslim              6         7         9        10         9        23
#> 14 Orthodox           13        17        23        32        32        47
#> 15 Other Christ…       9         7        11        13        13        14
#> 16 Other Faiths       20        33        40        46        49        63
#> 17 Other World …       5         2         3         4         2         7
#> 18 Unaffiliated      217       299       374       365       341       528
#> # … with 4 more variables: `$75-100k` <dbl>, `$100-150k` <dbl>,
#> #   `>150k` <dbl>, `Don't know/refused` <dbl>
relig_income %>%
  pivot_longer(!religion, names_to = "income", values_to = "count")
#> # A tibble: 180 × 3
#>    religion income             count
#>    <chr>    <chr>              <dbl>
#>  1 Agnostic <$10k                 27
#>  2 Agnostic $10-20k               34
#>  3 Agnostic $20-30k               60
#>  4 Agnostic $30-40k               81
#>  5 Agnostic $40-50k               76
#>  6 Agnostic $50-75k              137
#>  7 Agnostic $75-100k             122
#>  8 Agnostic $100-150k            109
#>  9 Agnostic >150k                 84
#> 10 Agnostic Don't know/refused    96
#> # … with 170 more rows

同时也可以加入管道符%>%

代码语言:javascript
复制
##example
library(dplyer)
library(tidyr)
new <- old %>% pivot_longer(-Sample, names_to = "new", values_to = "count")

总结

R语言不只是一个强大的可视化软件,在做的组学多了后,发现对一般的表格的处理也是具有强大的功能呢,因此在后续的学习中,我也要加强相关的基础的学习。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参数
  • 下面是官网上的一段example
  • 总结
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档