这是我的第一篇文章,因此请原谅任何错误。
我有两个要按样品名称合并的数据集,问题是第二个数据集在样品名称中具有额外的标签,并且与第一个数据集的顺序不同。
Clinical
Patient, Cell Count
BB-01-D1 7
BB-02-D1 4
BB-04-D30 2
Flow
Patient, Cell Count
2-5-19_BB-01-D1 7
3-15-19_BB-04-D30 2
2-6-19_BB-02-D1 4
我想知道是否有一种方法可以组合和匹配“患者”列是否包含部分相同的名称,或者是否有一种方法可以摆脱“患者”列中所有行的多余标签所以我可以简单地重新排序。
谢谢。
答案 0 :(得分:0)
有可能:
library(tidyverse)
df1<-read.table(text="Patient Cell Count
BB-01-D1 7
BB-02-D1 4
BB-04-D30 2",header=T,fill=T)
df1<-df1[,-ncol(df1)]
df2<-read.table(text="Patient, Cell Count
2-5-19_BB-01-D1 7
3-15-19_BB-04-D30 2
2-6-19_BB-02-D1 4",header=T,fill=T)
df2<-df2[,-ncol(df2)]
df2<-df2 %>%
mutate(Patient.=str_remove_all(df2$Patient.,".*(?<=_)"))
然后按照您的意愿从这里进行
cbind(df1,df2) #Cell Count labels lost due to reading errors. Will work on
#my data import
Patient Cell Patient. Cell
1 BB-01-D1 7 BB-01-D1 7
2 BB-02-D1 4 BB-04-D30 2
3 BB-04-D30 2 BB-02-D1 4
或:
df1<-df1 %>%
mutate(Patient=as.factor(Patient))
df2<-df2 %>%
rename(Patient=Patient.) %>%
mutate(Patient=as.factor(Patient))
merged<-df1 %>%
left_join(df2,"Patient")
names(merged)<-c("Patient","Clinical","Flow")
结果:
Patient Clinical Flow
1 BB-01-D1 7 7
2 BB-02-D1 4 4
3 BB-04-D30 2 2