gpt4 book ai didi

r - 如果某些列是通用的,则将数据框 append 到主数据框

转载 作者:行者123 更新时间:2023-12-04 17:08:27 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Combine two data frames by rows (rbind) when they have different sets of columns

(13 个回答)


5年前关闭。




我想将一个数据帧 append 到另一个(主数据帧)。问题是只有它们的列的子集是常见的。此外,它们的列的顺序可能不同。

主数据框:

   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

有什么聪明的方法可以做到这一点吗? This是一个类似的问题,但设置不同。

最佳答案

查看 bind_rows dplyr 中的函数包裹。默认情况下,它会为您做一些好事,例如填充 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.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

要解决您问题中的问题,您需要选择 master data.frame 中的列。第一的。如 a是主人 data.frame , 和 b包含要添加的数据,可以使用 select函数来自 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

关于r - 如果某些列是通用的,则将数据框 append 到主数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34277225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com