Home > database >  How to compare a data frame with another data frame?
How to compare a data frame with another data frame?

Time:12-26

I've got a Data Frame (df) with 4 Columns and n rows

df <- structure(list(x = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
11L, 12L, 13L, 1L, 2L), y = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L), pch = c(9L, 10L, 11L, 7L, 12L, 9L, 
7L, 5L, 8L, 1L, 8L, 2L, 5L, 8L, 5L), col = c(7L, 8L, 3L, 3L, 
4L, 6L, 3L, 4L, 2L, 1L, 7L, 5L, 4L, 7L, 6L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15"))

    x y pch col
1   1 1   9   7
2   2 1  10   8
3   3 1  11   3
4   4 1   7   3
5   5 1  12   4
6   6 1   9   6
7   7 1   7   3
8   8 1   5   4
9   9 1   8   2
10 10 1   1   1
11 11 1   8   7
12 12 1   2   5
13 13 1   5   4
14  1 2   8   7
15  2 2   5   6

and I want to compare the X and Y with another Data Frame 1x1 (df2)

df2 <- structure(list(V1 = 7, V2 = 1), class = "data.frame", row.names = c(NA, 
-1L))

  V1 V2
1  7  1

and if it is the same I want to take the entry( in this case number 7) to draw it into my grid with the pch and col which are written in the first Data Frame.

My attempt was compare it with a if loop but I don't know how to get the right column from the first Data frame. In this case x = 7 y = 1 pch = 7 and col = 3

if(input$V1 == playfield$x && input$V2 == playfield$y) {

}

Appreciate every help or idea.

CodePudding user response:

You can just do:

new_df <- playfield[playfield$x == input$V1 & playfield$y == input$V2,]

CodePudding user response:

You could use right_join from dplyr

library(dplyr)

right_join(df, df2, by=c("x"="V1", "y"="V2"))

output:

  x y pch col
1 7 1   7   3

data:

df <- structure(list(x = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
11L, 12L, 13L, 1L, 2L), y = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L), pch = c(9L, 10L, 11L, 7L, 12L, 9L, 
7L, 5L, 8L, 1L, 8L, 2L, 5L, 8L, 5L), col = c(7L, 8L, 3L, 3L, 
4L, 6L, 3L, 4L, 2L, 1L, 7L, 5L, 4L, 7L, 6L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15"))

df2 <- structure(list(V1 = 7, V2 = 1), class = "data.frame", row.names = c(NA, 
-1L))
  •  Tags:  
  • r
  • Related