【问题标题】:Filtering a dataframe in r row names from a second data frame in r从 r 中的第二个数据帧中过滤 r 行名称中的数据帧
【发布时间】:2012-07-24 12:18:41
【问题描述】:

我有 data.frame :

df1<-data.frame("Sp1"=1:6,"Sp2"=7:12,"Sp3"=13:18)
rownames(df1)=c("A","B","C","D","E","F")

df1

  Sp1 Sp2 Sp3
A   1   7  13
B   2   8  14
C   3   9  15
D   4  10  16
E   5  11  17
F   6  12  18

我通过 rowSums(df1) 的截止值过滤 df1 并返回我想包含在下游分析中的站点(行名)。

include<-rownames(df1[rowSums(df1)>=22,])
include

[1] "B" "C" "D" "E" "F"

我有第二个 data.frame :

df2<-data.frame(site.x=c("A","B","C"), site.y=c("D","E","F"),score=1:3)

  site.x site.y score
1      A      D     1
2      B      E     2
3      C      F     3

我想过滤 df2 使其仅包含 df2$site.xdf2$site.y 与“包含”中列出的站点完全相同的行,即过滤掉包含“A”的行并返回。

  site.x site.y score    
2      B      E     2
3      C      F     3

我试过了:

filter<-df2$site.x == include & df2$site.y == include   

filtered<-df2[filter,]

感谢您的建议!

回答

使用 %in%

filter<-df2$site.x %in% include & df2$site.y =%in% include  

filtered<-df2[filter,]
filtered

   site.x site.y score
 2      B      E     2
 3      C      F     3

【问题讨论】:

  • 可能用%in% 代替==
  • 没有骰子!您认为这与“包含”的结构有关吗?

标签: r filter dataframe


【解决方案1】:

对我来说,它适用于:

filter<-df2$site.x %in% include & df2$site.y %in% include
df2[filter,]

事实上,您在问题的最后两行中输入了df1 而不是df2

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 2018-06-15
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多