Search code examples
rdataframematchingranking

match common rows between different dataframes in a new organized df


Can someone help me to match three or more different ranked df to have a final one containing only the rows common to all of them? I am trying match and merge functions but I can not go any further.

here is how the data may look like:

A <- data.frame(letter=LETTERS[sample(10)], x=runif(10)) B <- data.frame(letter=LETTERS[sample(10)], x=runif(10)) C <- data.frame(letter=LETTERS[sample(10)], x=runif(10))

"letter" is however the "row.names" on each df has only one column with the numerical "x", the ranked values.


Solution

  • There are not many details, but I try to suggest a basic approach. The function below tests if the two arguments provided from dataFrame1 and dataFrame2 match between them. In the evenience of TRUE answer, it stores the common value in a new dataFrame3. The index in the square brackets represents the rows that you would like to test.

    matching_row <- function(x, y) {
            if (identical(x, y)) {
            dataFrame3 <- x
            }
    }
    dataFrame3 <- matching_row(dataFrame$x[row], dataFrame2$x[row])
    

    You can modify the function according to the characteristics of your data by adding, i.e., a loop if the dataframes are quite big, ore more strict/flexible logical conditions to test the identity between dataframes.