在新组织的 df 中匹配不同数据帧之间的公共行
match common rows between different dataframes in a new organized df
有人可以帮我匹配三个或更多不同排名的 df 以获得最后一个只包含所有这些 df 共有的行吗?我正在尝试匹配和合并功能,但我不能再继续了。
数据可能如下所示:
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" 是每个 df 上的 "row.names" 只有一列带有数字 "x",排名值。
细节不多,但我尽量提出一个基本的方法。下面的函数测试 dataFrame1
和 dataFrame2
提供的两个参数是否匹配。在 TRUE
答案的情况下,它将公共值存储在一个新的 dataFrame3
中。方括号中的索引代表您要测试的行。
matching_row <- function(x, y) {
if (identical(x, y)) {
dataFrame3 <- x
}
}
dataFrame3 <- matching_row(dataFrame$x[row], dataFrame2$x[row])
您可以根据数据的特点修改函数,即如果数据帧很大,则添加一个loop
,或者更多strict/flexible逻辑条件来测试数据帧之间的身份.
有人可以帮我匹配三个或更多不同排名的 df 以获得最后一个只包含所有这些 df 共有的行吗?我正在尝试匹配和合并功能,但我不能再继续了。
数据可能如下所示:
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" 是每个 df 上的 "row.names" 只有一列带有数字 "x",排名值。
细节不多,但我尽量提出一个基本的方法。下面的函数测试 dataFrame1
和 dataFrame2
提供的两个参数是否匹配。在 TRUE
答案的情况下,它将公共值存储在一个新的 dataFrame3
中。方括号中的索引代表您要测试的行。
matching_row <- function(x, y) {
if (identical(x, y)) {
dataFrame3 <- x
}
}
dataFrame3 <- matching_row(dataFrame$x[row], dataFrame2$x[row])
您可以根据数据的特点修改函数,即如果数据帧很大,则添加一个loop
,或者更多strict/flexible逻辑条件来测试数据帧之间的身份.