我有一个包含RNASeq样本,基因符号和表达数据的数据框。我想根据样本类别对它们进行分组。
Sample Gene Exp
---------------------------------
A.56.100e.ax prk1 3.56
A.100CAS.500e.er prk1 45.20
A.300.EFE1.cx prk1 0.21
A.56.100e.ax csk 51.50
A.100CAS.500e.er csk 321.47
A.300.EFE1.cx csk 186.78
我想做的是按如下所示在单独的列中添加类别,
Sample Gene Exp Category
-------------------------------------------
A.56.100e.ax prk1 3.56 A.56
A.100CAS.500e.er prk1 45.20 A.100CAS
A.300.EFE1.cx prk1 0.21 A.300
A.56.100e.ax csk 51.50 A.56
A.100CAS.500e.er csk 321.47 A.100CAS
A.300.EFE1.cx csk 186.78 A.300
谢谢
sub
来捕获字符后跟数字。 df$Category <- sub('([A-Z]\\..*?)\\..*', '\\1', df$Sample)
df
# Sample Gene Exp Category
#1 A.56.100e.ax prk1 3.56 A.56
#2 A.100CAS.500e.er prk1 45.20 A.100CAS
#3 A.300.EFE1.cx prk1 0.21 A.300
#4 A.56.100e.ax csk 51.50 A.56
#5 A.100CAS.500e.er csk 321.47 A.100CAS
#6 A.300.EFE1.cx csk 186.78 A.300
数据
df <- structure(list(Sample = structure(c(3L, 1L, 2L, 3L, 1L, 2L), .Label = c("A.100CAS.500e.er", "A.300.EFE1.cx", "A.56.100e.ax"), class = "factor"), Gene = structure(c(2L, 2L, 2L, 1L, 1L, 1L), .Label = c("csk", "prk1"), class = "factor"), Exp = c(3.56, 45.2, 0.21, 51.5, 321.47, 186.78)), class = "data.frame", row.names = c(NA, -6L))
str_remove
来匹配.
,后跟一个或多个不是.
的字符,直到字符串的结尾($
)library(stringr)
df1 %>%
mutate(Category = str_remove(Sample, "\\.[^.]+$"))
带有base R
df$Category <- sub("\\.[^.]+$", "", df1$Sample)