通过另一个数据框的行名将列子集化

时间:2019-06-26 11:41:30

标签: r dataframe subset

我需要考虑另一个数据框的行名对一个数据框的列进行子集化。(在R中)

我正在尝试选择巴西亚马逊的代表性物种,并考虑到代表性位置的百分比(该信息位于另一个数据框中),将一个出色的巴西数据库作为子集

> a <- data.frame("John" = c(2,1,1,2), "Dora" = c(1,1,3,2), "camilo" = c(1:4),"alex"=c(1,2,1,2))
> a
  John Dora camilo alex
1    2    1      1    1
2    1    1      2    2
3    1    3      3    1
4    2    2      4    2
> b <- data.frame("SN" = 1:3, "Age" = c(15,31,2), "Name" = c("John","Dora","alex"))
> b
  SN Age Name
1  1  15 John
2  2  31 Dora
3  3   2 alex
> result <- a[,rownames(b)[1:3]]
Error in `[.data.frame`(a, , rownames(b)[1:3]) : 
  undefined columns selected

我想得到这个数据框

  John Dora   alex
1    2    1      1    
2    1    1      2
3    1    3      1
4    2    2      2

1 个答案:

答案 0 :(得分:0)

简单的a[,b$Name]不起作用,因为b$Name被认为是一个因素。要小心,因为它不会引发错误,但是您会得到错误的答案!

但这很容易通过使用a[,as.character(b$Name)]来代替!