1

I have Two files as like this

cat.01 dog.01
cat.03 dog.04
cat.05 dog0.2

Another file

cat.01
cat.05

Then I want to print the common based on the first column

cat.01 dog.01
cat.05 dog0.2

I tried with intersection but it only prints the first column. I tried with merge also but it is taking too much time to respond

Waldi
  • 39,242
  • 6
  • 30
  • 78
user90
  • 381
  • 2
  • 10

2 Answers2

2

you could use %in%...

sample data

library( data.table )
dt1 <- fread("cat.01 dog.01
cat.03 dog.04
cat.05 dog0.2", header = FALSE )

dt2 <- fread("cat.01
cat.05", header = FALSE)

#  dt1
#        V1     V2
# 1: cat.01 dog.01
# 2: cat.03 dog.04
# 3: cat.05 dog0.2

#  dt2
#        V1
# 1: cat.01
# 2: cat.05

code

dt1[ V1 %in% dt2$V1, ]
#        V1     V2
# 1: cat.01 dog.01
# 2: cat.05 dog0.2
Wimpel
  • 26,031
  • 1
  • 20
  • 37
1

You want dplyr's filter function

name <- c('cat.01','dog.01','cat.03','dog.04','cat.05','dog.02')
name_2 <- c('cat.01','cat.05')

df1 <- matrix(name, ncol=2, byrow=TRUE) %>% as.data.frame()
df2 <- matrix(name_2) %>% as.data.frame()
df3 <- df1 %>%
  dplyr::filter(V1 %in% df2$V1)
df3
      V1     V2
1 cat.01 dog.01
2 cat.05 dog.02
Justin Cocco
  • 392
  • 1
  • 6