当前位置:  开发笔记 > 编程语言 > 正文

如果某些列是常见的,则将数据帧附加到主数据帧

如何解决《如果某些列是常见的,则将数据帧附加到主数据帧》经验,为你挑选了1个好方法。

我想将一个数据框附加到另一个数据框(主数据框).问题是只有列的子集是常见的.此外,其列的顺序可能不同.

主数据帧:

   a b  c
r1 1 2 -2
r2 2 4 -4
r3 3 6 -6
r4 4 8 -8

新数据框:

      d  a   c
r1 -120 10 -20
r2 -140 20 -40

预期结果:

    a   b    c
r1  1   2   -2
r2  2   4   -4
r3  3   6   -6
r4  4   8   -8
r5 10 NaN  -20
r6 20 NaN  -40

这有什么聪明的方法吗?这是一个类似的问题,但设置不同.



1> ialm..:

查看包中的bind_rows功能dplyr.默认情况下,它会为你做一些很好的事情,例如data.frameNAs 填充存在于一个而不是另一个的列,而不仅仅是失败.这是一个例子:

# 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.5801230 -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是master data.frame,并b包含要添加的数据,则可以使用select函数from dplyr来获取首先需要的列.

# 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.5801230 -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

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有