- 数据合并前如何检查各个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>
- 如何快速找出重复数据?
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)
- 如何清洗列名 转换为小写并且使用下划线分割?
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"
- 如何快速统计单变量的频数和百分比?
fake_raw %>%
tabyl(cylinders_number) %>% # janitor::tabyl 自动统计频数和百分比
adorn_pct_formatting(digits = 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)