来自df中multile列和R中print列n的grep向量
我需要匹配从df3$end到df2$V2和df$V3的模式向量。然后,最终的输出文件应该采用df1,并从df2中附加匹配的列V4和V5,如预期输出所示来自df中multile列和R中print列n的grep向量,r,R,我需要匹配从df3$end到df2$V2和df$V3的模式向量。然后,最终的输出文件应该采用df1,并从df2中附加匹配的列V4和V5,如预期输出所示 df1 <- read.table(text=' chr init 12 25289552 3 180418785 3 180434779 6 69909 5 284892182'
df1 <- read.table(text=' chr init
12 25289552
3 180418785
3 180434779
6 69909
5 284892182', header=TRUE)
df2 <- read.table(text=' V1 V2 V3 V4 V5 V6
1 69094 321233 medium 2.1 321234
1 69094 21231310 medium 3.4 21231313
12 25289552 180434559 high 1.1 180434779
1 69095 69909 medium 2.9 69909
3 180418785 284892182 medium 1.8 284892182
3 180434779 69909 low 2.8 69909', header=TRUE)
df3 <- read.table(text=' chr init end
12 25289552 180434779
3 180418785 321233
3 180434779 180434779
6 69909 69909
5 284892182 21231313
3 180418785 284892182 ', header=TRUE)
#expected output
df1_chr df1_init df3_end df2_V4 df2_V5 df2_V4_2 df2_V5_2
12 25289552 180434779 high 1.1 NA NA NA
3 180418785 321233 medium 2.1 284892182 medium 1.8
3 180434779 180434779 high 1.1 NA NA NA
6 69909 69909 medium/low 2.9/2.8 NA NA NA
5 284892182 21231313 medium 3.4 NA NA NA
df1你能使用dplyr吗
库(dplyr)
df1%>%
内部连接(df3,by=c(“chr”,“init”))%>%
内部联接(df2,by=c(“end”=“V3”))%>%
选择(-V1,-V2)%%>%group_by(chr,init,end)%%>%
总结(df2_V4=粘贴(V4,collapse=“,”),df2_V5=粘贴(V5,collapse=“,”)
是否可以通过“end”=2个不同的列进行内部连接,如df2中的V3或V6(by=c(“end”=V3 V6”),不起作用)。此外,在少数情况下,df1_init具有不同的df3_端点,因此必须将它们作为单独的列添加,如示例所示。感谢您的帮助。谢谢
matches <- filter(df2, grepl(paste(df3$end, collapse="|"), df2$V3,df2$V4))