【问题标题】:Creating data-frame with multiple variables in R在 R 中创建具有多个变量的数据框
【发布时间】:2018-12-26 08:03:54
【问题描述】:

我有 4 个数据帧 a、b、c、d,其中包含多个变量(a=13、b=7、c=3、d=6)。所以,我想创建一个结合这些的新数据框。

我所做的是,首先使用library(tidyverse),我将每个数据框中的所有变量统一起来,名称如下

Uni_a = gather(a, key, d) %>%
                 select(-key)
Uni_b = gather(b, key, d) %>% 
                 select(-key)
Uni_c = gather(c, key, d) %>% 
                 select(-key)
Uni_d = gather(d, key, d) %>%
                 select(-key)

现在,如果我看一下尺寸

dim(Uni_a)
#[1] 819   1
dim(Uni_b)
#[1] 441   1
dim(Uni_c)
#[1] 189   1
dim(Uni_d)
#[1] 378   1

现在,挑战来了:我想用 Uni_a、Uni_b、Uni_c、Uni_d 创建一个最终数据帧,但不幸的是它返回了错误消息 - dataframe=data.frame(Uni_a,Uni_b,Uni_c,Uni_d)

data.frame(Uni_a, Uni_b, Uni_c, Uni_d) 中的错误: 参数意味着不同的行数:189、378、819、441。

谁能帮我解决这个问题?

我的目标是在数据框中创建 4 个变量以供进一步分析。

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    我们可以从rowr使用cbind.fill

    library(rowr)
    cbind.fill(Uni_a,Uni_b,Uni_c,Uni_d, fill = NA)
    

    不用单独创建变量,它可以通过将对象放在list 中来使用map 在循环中完成

    library(tidyverse)
    mget(letters[1:4]) %>%
        map(~ gather(.x, key, d) %>%
                 select(-key)) %>%
        {do.call(cbind.fill, .)}
    

    【讨论】:

    • 我试过了,它确实创建了 4 个变量,谢谢@akrun,但是变量名丢失了。$ d: int 5 5 0 5 5 5 4 0 4 4 ... $ d:整数 5 3 4 3 5 4 5 3 4 4 ... $ d:整数 1 5 5 5 5 5 5 5 5 4 ... $ d:整数 5 5 5 5 5 5 5 5 5 4 ...跨度>
    • @sam 根据我创建的示例,情况并非如此cbind.fill(data.frame(col1 =1:5), data.frame(col2 = 1:7), data.frame(col3 = 1:9), fill = NA)
    • 你期望输出什么?您应该提供一个可重现的小示例
    • Uni_a Uni_b Uni_c Uni_d 1 1 2 3 2 5 4 4 3 5 5 5 5 4 3 2
    • @sam 稍后设置名称,即out <- cbind.fill(Uni_a,Uni_b,Uni_c,Uni_d, fill = NA); names(out) <- paste0("Uni_", letters[1:4])
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多