基于rownames的子集数据帧

时间:2017-05-09 20:19:20

标签: r

我有两个数据框(bwenvbwsp)。 bwspbwenv的子集,它们具有匹配的rownames(示例ID)。我想将bwenv分组,以便它只包含bwsp中也包含的行。

当行数匹配时,我使用了:

  

bw2015< - cbind(bwenv,bwsp)

使用组合数据创建新数据框。

我的问题与此处提出的问题非常相似:R subset a column in data frame based on another data frame/list,但子集化是由每个数据框中的一列数据完成的(而不是像我想要的那样的行名称)。

2 个答案:

答案 0 :(得分:0)

library(dplyr)

bw2015 <- bwenv %>% 
  add_rownames("row_names") %>%
  semi_join(add_rownames(bwsp, "row_names"), by = "row_names")

答案 1 :(得分:0)

继续@yeedle的解决方案后,我对它进行了一些修改,发现这对我有用:

library(dplyr)
bwenv2 <- bwenv %>% 
  rownames_to_column("row_names") %>%
  semi_join(rownames_to_column(bwsp, "row_names"), by = "row_names")
rownames(bwenv2) <- bwenv2$row_names 
bwenv2 <- bwenv2 %>% select(-row_names)

bw2015 <- cbind(bwenv2, bwsp)
str(bw2015)