gpt4 book ai didi

R:合并大数据框

转载 作者:行者123 更新时间:2023-12-02 01:11:56 24 4
gpt4 key购买 nike

假设我创建了一个数据框,foo :

foo <- data.frame(A=rep(NA,10),B=rep(NA,10))
foo$A[1:3] <- "A"
foo$B[6:10] <- "B"

看起来像,
      A    B
1 A <NA>
2 A <NA>
3 A <NA>
4 <NA> <NA>
5 <NA> <NA>
6 <NA> B
7 <NA> B
8 <NA> B
9 <NA> B
10 <NA> B

我可以 coalesce将其放入一列,如下所示:
data.frame(AB = coalesce(foo$A, foo$B))

给予,
     AB
1 A
2 A
3 A
4 <NA>
5 <NA>
6 B
7 B
8 B
9 B
10 B

这很好。现在,假设我的数据框很大,有很多列。我该怎么做 coalesce没有分别命名每一列?据我了解, coalesce期待向量,所以我没有看到一个整洁的 dplyr解决方案,我可以拔出所需的列并将它们一起传递。有任何想法吗?

编辑

根据要求,一个“更难”的例子。
foo <- data.frame(A=rep(NA,10),B=rep(NA,10),C=rep(NA,10),D=rep(NA,10),E=rep(NA,10),F=rep(NA,10),G=rep(NA,10),H=rep(NA,10),I=rep(NA,10),J=rep(NA,10))
foo$A[1] <- "A"
foo$B[2] <- "B"
foo$C[3] <- "C"
foo$D[4] <- "D"
foo$E[5] <- "E"
foo$F[6] <- "F"
foo$G[7] <- "G"
foo$H[8] <- "H"
foo$I[9] <- "I"
foo$J[10] <- "J"

我该怎么做 coalesce这不必写:
data.frame(ALL= coalesce(foo$A, foo$B, foo$C, foo$D, foo$E, foo$F, foo$G, foo$H, foo$I, foo$J))

最佳答案

您可以使用 do.call(coalesce, ...) ,这是编写带有大量参数的函数调用的一种更简单的方法:

library(dplyr)
do.call(coalesce, foo)
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"

关于R:合并大数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44851873/

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