1. 数据合并前如何检查各个dataframe的行名是否一致
library(janitor)
df1 <- data.frame(a = 1:2, b = c("x", "y"))
df2 <- data.frame(a = 3:4, f = 5:6) # 列名相同,但b是数值型
df3 <- data.frame(a = 3:5, bf = c("x","y","z")) # 列名相同,但b是数值型
compare_df_cols(df1, df2,df3)
 
输出
 column_name       df1     df2       df3
1           a   integer integer   integer
2           b character    <NA>      <NA>
3          bf      <NA>    <NA> character
4           f      <NA> integer      <NA>
  1. 如何快速找出重复数据?
library(dplyr)
library(janitor)
 
df <- data.frame(id = c(1,2,2,3,4,4,4), value = c(10,20,20,30,40,40,40))
 
df %>% get_dupes(id)
  1. 如何清洗列名 转换为小写并且使用下划线分割?
library(dplyr)
library(janitor)
 
# 创建示例数据
fake_raw <- data.frame(
    "Cylinders——Number" = c(4, 4, 6, 6, 8, 8, 8, 4),
    "Gear Type" = c(3, 4, 4, 3, 5, 3, 3, 4),
    stringsAsFactors = FALSE
)
 
fake_raw <- fake_raw %>%
    janitor::clean_names()  # 默认会把 "Cylinders Number" -> "cylinders_number"
  1. 如何快速统计单变量的频数和百分比?
fake_raw %>%
    tabyl(cylinders_number) %>%  # janitor::tabyl 自动统计频数和百分比
    adorn_pct_formatting(digits = 1)  # 百分比格式化
  1. 如何使用正则表达在的捕获是提取fasta数据中的gene名?
# 示例FASTA头信息
Fasta.headers <- c(
    ">sp|P12345|EGFR_HUMAN Epidermal growth factor receptor OS=Homo sapiens GN=EGFR PE=1 SV=2",
    ">sp|Q07812|BAX_HUMAN Apoptosis regulator BAX OS=Homo sapiens GN=BAX PE=1 SV=1",
    ">tr|A0A024R1R8|A0A024R1R8_HUMAN BRCA2 OS=Homo sapiens GN=BRCA2 PE=2 SV=1",
    ">sp|P04637|P53_HUMAN Cellular tumor antigen p53 OS=Homo sapiens GN=TP53 PE=1 SV=4",
    ">sp|P15056|BRAF_HUMAN Serine/threonine-protein kinase B-raf OS=Homo sapiens GN=BRAF PE=1 SV=2"
)
 
# 应用正则表达式
Gene <- sub(".*GN=([^ ]+).*", "\\1", Fasta.headers)
 
# 查看结果
print(Gene)