-2

given two files

df1

df1=read.table("C:\\file1.txt", sep="")
Value   name
  0.2    sam
  0.4  david
  3    david
  7    nicola

df2

File2=read.table("C:\\file2.txt", sep="")
Value   name
  0.8 nicola
  0.9  david

Keep only rows where names exist in both files. For instance, desired outputs:

File 1

Value   name
  7  nicola

File 2

Value   name
  0.8  nicola
temor
  • 831
  • 1
  • 9
  • 25

1 Answers1

1

We can try

tbl1 <- table(df1$name)
tbl2 <- table(df2$name)
i1 <- names(tbl1) %in% names(tbl2)
nm1 <- names(tbl1)[tbl1[i1]==tbl2[i1]]
df1[df1$name %in% nm1,]
#  Value   name
#4     7 nicola

i2 <- names(tbl2) %in% names(tbl1)
i21 <- tbl2[i2]==tbl1[intersect(names(tbl1), names(tbl2[i2]))]

nm2 <- names(i21)[i21]
df2[df2$name %in% nm2,]
#   Value   name
#1   0.8 nicola
akrun
  • 789,025
  • 32
  • 460
  • 575