我正试图根据单元格的第一个字母排序一行,我很难在r中编写代码。
<表类>
snp
allele1
allele2
tbody><<tr>mmsoop rs3122 C G td SNP1234 T C rs3144 表类>
或者
df<- read.table(
text= "
snp allele1 allele2
mmsoop A A
rs3122 C G
SNP1234 T C
rs3144 A A",
header=T
)
df[grep("^(SNP|rs)",df$snp),]
snp allele1 allele2
2 rs3122 C G
3 SNP1234 T C
4 rs3144 A A
我们可以在subset
中使用grepl
,通过从字符串的开始(^
)匹配rs
或(|
)SNP
来创建逻辑向量,以子集
subset(df1, grepl("^(rs|SNP)", snp))
snp allele1 allele2
2 rs3122 C G
3 SNP1234 T C
4 rs3144 A A
数据df1 <- structure(list(snp = c("mmsoop", "rs3122", "SNP1234", "rs3144"
), allele1 = c("A", "C", "T", "A"), allele2 = c("A", "G", "C",
"A")), class = "data.frame", row.names = c(NA, -4L))
我们可以将filter
和str_detect
合并:
library(dplyr)
library(stringr)
df %>%
filter(str_detect(snp, 'rs|SNP'))
snp allele1 allele2
1 rs3122 C G
2 SNP1234 T C
3 rs3144 A A