Używam dplyr
i kocham to, ale znalazłem dziwne zachowanie. Czyszczę niektóre dane z różnych źródeł i umieszczam je w ramce danych. Część tego wymagała większego czyszczenia, wykonanego przy użyciu dplyr
i otrzymała obiekt tbl
. Druga część była prostsza, a ja miałem obiekt data.frame
. I rbind
ich razem, a kiedy robiłem analizy, próbując użyć funkcji filtrowania dplyr
, to nie działałoby poprawnie. Przykład:rbind tbl i df daje błędy z filtrem
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
Jeśli wykonam df3[df3$group == "C", ]
, działa poprawnie. Pluskwa?
Wypróbuj 'df3%>% rozgrupuj()%>% filtr (grupa ==" C ")' lub 'as.data.frame (df3)%>% filtr (grupa ==" C ")'. – akrun
@akrun yep, obie te czynności! –
'df3 <- rbind (d1, as.tbl (df2))' powoduje ten sam problem, więc nie chodzi o to, że "df2" jest ramką danych. – Henrik