簡體   English   中英

將新觀察值添加到R中數據框的列中

[英]Add new observations to a column in a dataframe in R

讓我們從兩個數據幀開始:

m1 <- matrix(sample(c(NA, 1:10), 100, replace = TRUE), 10)
df1 <- as.data.frame(m1)
df1
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   4  5  9  8  3  8  7  1  5   5
2   2  1 NA  6  6 NA  3  8  8   2
3  NA  5  7  2  1 10  8  6  5   7
4   8  1  1  6  8  4  5  3  5   2
5  10  4  9  9  1 NA  7  8  6   2
6   1  8 NA  6  5  7  9  9  9   3
7   1 10  2  4 NA 10  6  5  5   4
8   7  3 10  7  5  5  2  1 NA   1
9  NA NA  8 10  6  4  3 10  7   7
10  7 10  2  2  9  4 NA  1  2  10

m2 <- matrix(sample(c(NA, 2:20), 100, replace = TRUE), 10)
df2 <- as.data.frame(m2)
df2
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   5 NA NA 19 20 15  5 11  4  17
2   4 13 20 NA  9 18  7 11  5  12
3  17  3 14  4  6  2 11 16 11   7
4  14 10  9 16 NA  7 20  5  8   6
5   5 14 10 20 19 16 NA  7 NA  NA
6  12 14 14  8  3 20 15  7 15  17
7   4 15 18 12  4  2 19 13  9   8
8  14 11  4 20  5 17 NA 13 19  12
9  15  3 14 16 14 19 17  8  5  NA
10  2  2 11  2 16  4 NA 18 20  NA

現在,我不想合並兩個df,而只合並一些列。

如何將df2 $ V10移至df1 $ V4?

結果df由20行組成,但11:20行將由df2 $ V10的10個值填充。 這些間隔中的其余列應為NA。

從“ df2”中提取“ V10”列,創建一個data.frame並使用bind_rows綁定兩個數據集。 默認情況下,其他列值將由NA填充

library(dplyr)
bind_rows(df1, data.frame(V4 = df2$V10))
#   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1   2 10 NA  9  7 NA NA  8  1   5
#2   2  5 10 10  8  8  3  7 NA   2
#3   3  7 NA  5  4  5  2  5  7   2
#4   9  4  6  4  8  6  7  9  8   2
#5   3  6  2  3  3  6 10  5  9   5
#6   1 NA  3  7  5  4  6  3  7  10
#7   6  3  1  3  4 10  2  6 NA   7
#8   9  1  5  4  4  7  4  2  2   1
#9   3  1  6  6  1  7  7  6  6   1
#10 NA  6 10  9 10 10  6  4  3   9
#11 NA NA NA 10 NA NA NA NA NA  NA
#12 NA NA NA  3 NA NA NA NA NA  NA
#13 NA NA NA  4 NA NA NA NA NA  NA
#14 NA NA NA 18 NA NA NA NA NA  NA
#15 NA NA NA 20 NA NA NA NA NA  NA
#16 NA NA NA 11 NA NA NA NA NA  NA
#17 NA NA NA 15 NA NA NA NA NA  NA
#18 NA NA NA  2 NA NA NA NA NA  NA
#19 NA NA NA  3 NA NA NA NA NA  NA
#20 NA NA NA 14 NA NA NA NA NA  NA

對於多列,在執行bind_rows之前,請子集數據集並設置感興趣的列名

bind_rows(df1, setNames(df2[c('V10', 'V8')], c('V4', 'V2')))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM