匹配来自不同数据帧的信息并过滤掉冗余列

时间:2016-05-13 16:13:56

标签: r dataframe

在第一个数据框中是与相应网格单元格匹配的站点名称。这些网格单元具有唯一的列号和行号。这是第一个数据帧的示例:

Site <- as.data.frame(c("Site.A","Site.B","Site.C"))
Row <- as.data.frame(c(1,2,3))
Column <- as.data.frame(c(5,4,3))
df1 <- cbind(Site,Row, Column)
colnames(df1) <- c("Site","Row","Column")

在单独的数据框中,我从所有可能的网格单元中获得单独的信息。一个例子:

eg1 <- rbind(c(1,2,3,4,5),c(5,4,3,2,1))
eg2 <- as.data.frame(matrix(sample(0:50, 15*10, replace=TRUE), ncol=5))
df2 <- rbind(eg1,eg2)
rownames(df2)[1:2] <- c("Row","Column")

我想要做的是过滤df2中的列,使它们只有df1中包含列和行的网格单元格。然后,我需要将每个站点名称与其对应的网格单元格匹配。我需要的一个示例输出。

Output <- df2[,1:3]
colnames(Output) <- c("Site.A","Site.B","Site.C")

1 个答案:

答案 0 :(得分:2)

一种解决方案如下:

df2[, (df2['Row', ] %in% df1$Row) & (df2['Column', ] %in% df1$Column)]

输出头如下:

       V1 V2 V3
Row     1  2  3
Column  5  4  3
3      49 29 34
4      45 42 18
5       9 15 45
6      34 35 19