发现自己的R语言的基础还是相对弱很多的,通过对前面的肺癌单细胞文章代码的学习,也在巩固自己的R基础。今天是需要对昨天test的icitools的R包进行自己的数据分析。
首先是需要对自己所查找的转录组的数据进行整理,由于给的example的数据比较少,因此发现手动也是可以的,很快,但是由于自己的转录组数据太多了,达到了几十个,因此自己需要再次借助R语言的函数转换。
第一个是我觉得很好的函数,是两组的数据合并的函数,一开始自己只会在excel上运用相关的公式,但是发现这个包的运行比excel更快,是dplyer下面的full_join.
今天说的是图和把excel里面的宽表变成长表的函数pivot_longer函数,是tidyr包下面的一个函数。
函数的网页讲解:https://tidyr.tidyverse.org/reference/pivot_longer.html
代码语言: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语言不只是一个强大的可视化软件,在做的组学多了后,发现对一般的表格的处理也是具有强大的功能呢,因此在后续的学习中,我也要加强相关的基础的学习。