使用数据框列表的公共列创建数据框-R

华尼托

我需要获取数据框列表的公共列,这些列分隔在不同的数据框中。请看下面的例子:

df1 <- data.frame(Dates = c('01-01-2020','02-01-2020','03-01-2020'), col1 = c(1,2,3), col2 = c(3,2,1))
df2 <- data.frame(Dates = c('01-01-2020','02-01-2020','03-01-2020'), col1 = c(4,5,6), col2 = c(6,5,4))
df3 <- data.frame(Dates = c('01-01-2020','02-01-2020'), col1 = c(7,8), col2 = c(8,7))
ldf <- list(df1, df2, df3)

所需的输出将是以下两个数据帧:

df_col1:
Date       df1 df2 df3
01-01-2020   1   4   7
02-01-2020   2   5   8
03-01-2020   3   6  NA

df_col2:
Date       df1 df2 df3
01-01-2020   3   6   8
02-01-2020   2   5   7
03-01-2020   1   4  NA

当然,ldf实际上要更长一些,但是列数固定为5,因此输出数也固定为(4)。这意味着我不介意是否为每个输出使用代码块。

我已经尝试了几件事,但是似乎都没有用。我正在使用base R,希望找到没有其他软件包的解决方案。

非常感谢您的宝贵时间!

阿克伦

我们将list元素与bind_rowsfrom绑定在一起dplyr,然后循环遍历“ col”列以及常见的“ Dates”,pivot_widerrename根据需要将其整形为“ wide”格式

library(dplyr)
library(purrr)
library(tidyr)
library(stringr)
newdf <- bind_rows(ldf) 
out <- map(names(newdf)[-1], ~ 
            newdf %>%
                select(Dates, .x) %>%
                mutate(rn = rowid(Dates)) %>% 
                pivot_wider(names_from =rn, values_from = !! rlang::sym(.x))  %>%
        rename_at(-1, ~ str_c('df', seq_along(.))))

-输出

out
#[[1]]
# A tibble: 3 x 4
#  Dates        df1   df2   df3
#  <chr>      <dbl> <dbl> <dbl>
#1 01-01-2020     1     4     7
#2 02-01-2020     2     5     8
#3 03-01-2020     3     6    NA

#[[2]]
# A tibble: 3 x 4
#  Dates        df1   df2   df3
#  <chr>      <dbl> <dbl> <dbl>
#1 01-01-2020     3     6     8
#2 02-01-2020     2     5     7
#3 03-01-2020     1     4    NA

或使用 base R

newdf <- do.call(rbind, ldf)
f1 <- function(dat, colName) {
      lst1 <- split(dat[[colName]], dat$Dates)
       do.call(rbind, lapply(lst1, `length<-`, max(lengths(lst1))))
 }
     
f1(newdf, 'col1')
f1(newdf, 'col2')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从R中的数据框创建列表

来自分类Dev

R中的列表创建数据框

来自分类Dev

使用 A 列 * B 列创建 R 数据框

来自分类Dev

使用列表在数据框中快速创建新列-R

来自分类Dev

R创建数据框

来自分类Dev

从数据框列表中获取列R

来自分类Dev

从列表中的数据框创建数据框,并在R的一列中创建最大值

来自分类Dev

R-识别数据框列中的公共元素

来自分类Dev

R:使用元素作为数据框的列表

来自分类Dev

使用R中的列表映射数据框

来自分类Dev

使用变量在R中创建数据框

来自分类Dev

如果我创建的命名列表与数据框的列同名,如何在r中添加数据框的行?

来自分类Dev

从R中的列表列表创建数据框

来自分类Dev

R从其他列表/数据框创建新列表

来自分类Dev

从R中的列表列表创建数据框

来自分类Dev

根据顺序比较在R数据框中创建数据列

来自分类Dev

使用R从数据框中删除列

来自分类Dev

R列表到数据框

来自分类Dev

如何遍历 R 数据框中的列并在每次迭代中使用列名创建新数据框?

来自分类Dev

在R中多个数据框中的一列中创建唯一值列表

来自分类Dev

在R中的多个数据框中的一列中创建唯一值列表

来自分类Dev

从R中的数据框创建复杂的列表结构

来自分类Dev

如何从R中的嵌套列表创建数据框?

来自分类Dev

R:根据列表元素名称创建新的数据框变量

来自分类Dev

遍历数据框列表以在R中创建图形

来自分类Dev

从R中的数据框创建复杂的列表结构

来自分类Dev

在列表内组合向量以创建数据框R

来自分类Dev

R数据框,按名称组合列并创建新列

来自分类Dev

使用R中的列表和列表名称的值替换数据框列的值

Related 相关文章

热门标签

归档