rbind tbl和df给出滤波器的错误

rbind tbl和df给出滤波器的错误,r,filter,dplyr,rbind,R,Filter,Dplyr,Rbind,我正在使用dplyr,并且很喜欢它,但是发现了一个奇怪的行为。我正在清理来自不同来源的一些数据,并将它们放在一个数据框中。它的一部分需要更多的清洁,使用dplyr完成,并产生tbl对象。另一部分更简单,我有一个data.frame对象。我rbind将它们放在一起,当我进行分析时,试图使用dplyr过滤功能,它无法正常工作。例如: df1 <- data.frame( group = factor(rep(c("C", "G"), 5)), value = 1:10) df1 &

我正在使用dplyr,并且很喜欢它,但是发现了一个奇怪的行为。我正在清理来自不同来源的一些数据,并将它们放在一个数据框中。它的一部分需要更多的清洁,使用
dplyr
完成,并产生
tbl
对象。另一部分更简单,我有一个
data.frame
对象。我
rbind
将它们放在一起,当我进行分析时,试图使用
dplyr
过滤功能,它无法正常工作。例如:

df1 <- data.frame(
   group = factor(rep(c("C", "G"), 5)),
   value = 1:10)
df1 <- df1 %>% group_by(group) #df1 is now tbl
df2 <- data.frame(
   group = factor(rep("G", 10)),
   value = 11:20)
df3 <- rbind(df1, df2) #df2 is data.frame
df3 %>% filter(group == "C") #returns filtered rows in df1 and all rows of df2
Source: local data frame [15 x 2]
Groups: group

  group value
1      C     1
2      C     3
3      C     5
4      C     7
5      C     9
6      G    11
7      G    12
8      G    13
9      G    14
10     G    15
11     G    16
12     G    17
13     G    18
14     G    19
15     G    20

df1这是因为当您在df1上使用group_by时,它的结构更改和操作是按组执行的。当你做rbind的时候

df3 <- rbind(df1, df2) 

df3您应该删除行“df1%group#U by(group)#df1现在是tbl”

如果要将data.frame更改为tbl_df,应该使用
df1Try
df3%>%ungroup()%%>%filter(group==“C”)
as.data.frame(df3)%%>%filter(group==“C”)
@akrun-yep,这两种方法都有效
df3
df3看起来像是使用dplyr中的
rbind_列表
而不是
rbind
工作(无论顺序如何,结果都是data.frame)。
df3<-rbind(df2,df1)
df1 <- data.frame(
   group = factor(rep(c("C", "G"), 5)),
   value = 1:10)


 # df1 <- df1 %>% group_by(group) #df1 is now tbl
  #  df1<-tbl_df(df1) 
    df2 <- data.frame(
       group = factor(rep("G", 10)),
       value = 11:20)
    df3 <- rbind(df1, df2) #df2 is data.frame
    df3 %>% filter(group == "C") #returns filtered rows in df1 and all rows of df2