r - 在 R 中将多个表附加到一个不同的列中
问题描述
在制作了几张表后我有一个数据框我想创建一个数据框,将所有表组合成一个数据框以便导出到 Excel。唯一的问题是每个表中的第一个变量都不同,因此bind_rows
不起作用。
虚拟样本数据:
df1 = data.frame(Id = c(11:16), date = seq(as.Date("2015-01-01"),as.Date("2015-01-6"),1))
df2 = data.frame(HH_size = c(1:6 ), date = seq(as.Date("2015-01-01"),as.Date("2015-01-6"),1) )
假设我做了这些桌子
df11<- df1 %>%
dplyr::group_by(date) %>%
count(Id) %>%
tidyr::spread(date,n)
df22<- df2 %>%
dplyr::group_by(date) %>%
count(HH_size) %>%
tidyr::spread(date,n)
df11
Id `2015-01-01` `2015-01-02` `2015-01-03` `2015-01-04` `2015-01-05` `2015-01-06`
<int> <int> <int> <int> <int> <int> <int>
1 11 1 NA NA NA NA NA
2 12 NA 1 NA NA NA NA
3 13 NA NA 1 NA NA NA
4 14 NA NA NA 1 NA NA
5 15 NA NA NA NA 1 NA
6 16 NA NA NA NA NA 1
这行不通
list <- c("df11" , "df22")
list %>% map_df(bind_rows)
Error: Argument 1 must have names
这是我想要的输出:
label cat `2015-01-01` `2015-01-02` `2015-01-03` `2015-01-04` `2015-01-05` `2015-01-06`
Id 11 1 NA NA NA NA NA
Id 12 NA 1 NA NA NA NA
Id 13 NA NA 1 NA NA NA
Id 14 NA NA NA 1 NA NA
Id 15 NA NA NA NA 1 NA
Id 16 NA NA NA NA NA 1
HH_size 1 1 NA NA NA NA NA
HH_size 2 NA 1 NA NA NA NA
HH_size 3 NA NA 1 NA NA NA
HH_size 4 NA NA NA 1 NA NA
HH_size 5 NA NA NA NA 1 NA
HH_size 6 NA NA NA NA NA 1
解决方案
将所有数据框放在一个列表中,然后您可以执行以下操作:
library(tidyverse)
list_df <- lst(df1, df2)
map_df(list_df, ~{
col <- names(.x)[1]
.x %>%
count(.data[[col]], date) %>%
pivot_wider(names_from = date, values_from = n) %>%
mutate(label = col) %>%
rename_with(~'cat', 1)
})
# cat `2015-01-01` `2015-01-02` `2015-01-03` `2015-01-04` `2015-01-05` `2015-01-06` label
# <int> <int> <int> <int> <int> <int> <int> <chr>
# 1 11 1 NA NA NA NA NA Id
# 2 12 NA 1 NA NA NA NA Id
# 3 13 NA NA 1 NA NA NA Id
# 4 14 NA NA NA 1 NA NA Id
# 5 15 NA NA NA NA 1 NA Id
# 6 16 NA NA NA NA NA 1 Id
# 7 1 1 NA NA NA NA NA HH_size
# 8 2 NA 1 NA NA NA NA HH_size
# 9 3 NA NA 1 NA NA NA HH_size
#10 4 NA NA NA 1 NA NA HH_size
#11 5 NA NA NA NA 1 NA HH_size
#12 6 NA NA NA NA NA 1 HH_size
推荐阅读
- c++ - 在 gcc 中将二维数组初始化为 0 时的值不正确
- javascript - 电子应用程序:如何使 dialog.showOpenDialog 模态
- datatables - 数据表 - 隐藏数据直到搜索
- arrays - 如何访问数据框列中的数组元素(scala)
- accessibility - Jaws 快捷键,用于将焦点从 JAWS 查找对话框转移到搜索词出现
- javascript - 文本输入不为空时启用表单提交按钮的最简单方法
- amazon-web-services - 创建 DMS 复制实例时选择 VPC
- sql-server - 如何使用 sql server 创建与具有等级或任何其他功能的更改日期时间相关联的序列号
- javascript - 位置 1 处的 JSON 中的意外标记
- ignite - 点燃 AffinityKeyMapped 和 AffinityKeyMapper