查看dplyr
包中的bind_rows
函數。默認情況下,它會爲你做一些很好的事情,比如填寫一個data.frame
中的列,但不是其他的NA
s,而不僅僅是失敗。這裏有一個例子:
# 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
要在你的問題解決問題,你想選擇在主data.frame
第一列。如果a
是主版本data.frame
,並且b
包含要添加的數據,則可以使用dplyr
中的select
函數獲取您首先需要的列。
# 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
如果您使用'dplyr',爲什麼不直接使用'bind_rows()'? – ialm
@ialm更仔細的閱讀,這個答案*不使用任何'dplyr'函數(它只是加載包)。值得注意的是,在加載'dplyr'後加載'plyr' *將會用'plyr'版本掩蓋'dplyr :: summarize'和'dplyr :: mutate',不推薦使用。 – Gregor
@Gregor是的,我現在明白了。出於你在註釋中突出顯示的原因,如果你在'dplyr'後面加載'plyr',我會發出一個警告,我相信Hadley建議你在'dplyr'之前加載'plyr',如果你需要使用這兩個軟件包的話。 – ialm