Tôi đang sử dụng dplyr
và yêu thích nó, nhưng tìm thấy một hành vi lạ. Tôi đang làm sạch một số dữ liệu từ các nguồn khác nhau và đặt chúng lại với nhau trong một khung dữ liệu. Một phần của nó yêu cầu làm sạch nhiều hơn, được thực hiện với dplyr
và dẫn đến một đối tượng tbl
. Phần khác đơn giản hơn, và tôi có một đối tượng data.frame
. Tôi rbind
chúng lại với nhau, và khi tôi đang phân tích, cố gắng sử dụng chức năng lọc dplyr
, nó sẽ không hoạt động đúng cách. Ví dụ:rbind tbl và df đưa ra lỗi với bộ lọc
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
Nếu tôi làm df3[df3$group == "C", ]
, nó hoạt động bình thường. Lỗi?
Thử 'df3%>% ungroup()%>% bộ lọc (nhóm ==" C ")' hoặc 'as.data.frame (df3)%>% bộ lọc (nhóm ==" C ")'. – akrun
@akrun yep, cả hai đều hoạt động! –
'df3 <- rbind (d1, as.tbl (df2))' kết quả trong cùng một vấn đề, do đó, nó không phải về 'df2' là một khung dữ liệu. – Henrik