Zapoznaj się z funkcją bind_rows
w pakiecie dplyr
. Domyślnie zrobi to dla ciebie kilka fajnych rzeczy, takich jak wypełnianie kolumn, które istnieją w jednym data.frame
, ale nie w innych z NA
s zamiast po prostu nie. Oto przykład:
# Use the dplyr package for binding rows and for selecting columns
library(dplyr)
# Generate some example data
a <- data.frame(a = rnorm(10), b = rnorm(10))
b <- data.frame(a = rnorm(5), c = rnorm(5))
# Stack data frames
bind_rows(a, b)
Source: local data frame [15 x 3]
a b c
1 2.2891895 0.1940835 NA
2 0.7620825 -0.2441634 NA
3 1.8289665 1.5280338 NA
4 -0.9851729 -0.7187585 NA
5 1.5829853 1.6609695 NA
6 0.9231296 1.8052112 NA
7 -0.58-0.6928449 NA
8 0.2033514 -0.6673596 NA
9 -0.8576628 0.5163021 NA
10 0.6296633 -1.2445280 NA
11 2.1693068 NA -0.2556584
12 -0.1048966 NA -0.3132198
13 0.2673514 NA -1.1181995
14 1.0937759 NA -2.5750115
15 -0.8147180 NA -1.5525338
Aby rozwiązać ten problem w swoim pytaniu, że chcesz wybrać dla kolumn w swojego mistrza data.frame
pierwszy. Jeśli a
jest wzorcem data.frame
, a b
zawiera dane, które chcesz dodać, możesz użyć funkcji select
z dplyr
, aby uzyskać kolumny, których potrzebujesz jako pierwsze.
# Select all columns in b with the same names as in master data, a
# Use select_() instead of select() to do standard evaluation.
b <- select_(b, names(a))
# Combine
bind_rows(a, b)
Source: local data frame [15 x 2]
a b
1 2.2891895 0.1940835
2 0.7620825 -0.2441634
3 1.8289665 1.5280338
4 -0.9851729 -0.7187585
5 1.5829853 1.6609695
6 0.9231296 1.8052112
7 -0.58-0.6928449
8 0.2033514 -0.6673596
9 -0.8576628 0.5163021
10 0.6296633 -1.2445280
11 2.1693068 NA
12 -0.1048966 NA
13 0.2673514 NA
14 1.0937759 NA
15 -0.8147180 NA
Jeśli używasz 'dplyr', dlaczego nie użyć po prostu' bind_rows() '? – ialm
@ialm Dzięki dokładniejszemu czytaniu ta odpowiedź * nie * używa żadnych funkcji 'dplyr' (po prostu ładuje pakiet). Warto zauważyć, że ładowanie 'plyr' * po * ładowaniu' dplyr' będzie maskować 'dplyr :: summary' i' dplyr :: mutate' z wersjami 'plyr' i nie jest zalecane. – Gregor
@Gregor Tak, teraz to widzę. I z powodów, które podkreślasz w swoim komentarzu, pojawi się ostrzeżenie, jeśli załadujesz 'plyr' po' dplyr' i sądzę, że Hadley zaleca ładowanie 'plyr' przed' dplyr', jeśli będziesz potrzebował użyć obu pakietów. – ialm