微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从多个 data.frame 中获取特定列并将其保存为 R 中的新 data.frame?

如何解决如何从多个 data.frame 中获取特定列并将其保存为 R 中的新 data.frame?

我有以下示例 CancellationToken,其中包含多个变量(即 A、B、C)。

data.frame

目标 我想从所有 set.seed(123) D1 <- data.frame(Date = seq(as.Date("2001-01-01"),to= as.Date("2001-01-10"),by="day"),A = runif(10,1,5),B = runif(10,3,6),C = runif(10,2,5)) D2 <- data.frame(Date = seq(as.Date("2001-01-01"),5)) D3 <- data.frame(Date = seq(as.Date("2001-01-01"),5)) 获取每个变量并将其保存为一个新的 data.frame名称设置为 data.frame,列名设置为 Variable,如下所示

data.frame+variable

我很感激这里的任何帮助。

解决方法

我们在 list 中获取数据集(没有第一列“日期”),transpose,然后使用 list 循环遍历 map,绑定“日期” ' 每个数据集中的列(最好将其保留为 list,但如果需要,请使用 list2env 在全局环境中创建对象)

library(dplyr)
library(purrr)
list(D1 = D1[-1],D2 = D2[-1],D3 = D3[-1]) %>%
     transpose %>%
     map(~ bind_cols(D1['Date'],.)) %>%
    list2env(.GlobalEnv)

-检查创建的对象 A、B、C

head(A,2)
#        Date       D1       D2       D3
#1 2001-01-01 2.150310 4.852097 3.660461
#2 2001-01-02 4.153221 4.609196 1.379363
head(B,2)
#        Date       D1       D2       D3
#1 2001-01-01 5.870500 3.428400 5.263425
#2 2001-01-02 4.360002 4.243639 4.887663
head(C,2)
#        Date       D1       D2       D3
#1 2001-01-01 4.668618 2.137494 2.730858
#2 2001-01-02 4.078410 3.326600 4.004167
,

这是一个基本的 R 选项

lst <- mget(ls(pattern = "^D\\d+"))
list2env(
  sapply(
    names(lst[[1]])[-1],function(x) {
      cbind(
        lst[[1]]["Date"],list2DF(lapply(lst,`[[`,x))
      )
    },USE.NAMES = TRUE,simplify = FALSE
  ),envir = .GlobalEnv
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。