我有三个具有不同列数和观察值的数据框。我想创建一个新的数据框,其中列出了每个数据框中的所有不同变量,并指定了文件名。
我有三个数据框:
library(tibble)
library(magrittr)
a<-tibble(
z=c(1,2,3),
y=c(4,5,6),
)
b<-tibble(
n=c(1,2),
q=c(4,5),
r=c(3,6),
)
c<-tibble(
l=c(1,2),
e=c(4,5),
d=c(3,6),
)
我可以轻松提取一个数据帧的列名,并指定它来自哪个文件。
df<-as.data.frame(names(a))%>%
dplyr::mutate(sheet=deparse(substitute(a)))
我如何遍历多个数据帧并保存一个数据帧,如下所示:
df<-tibble::tibble(
name=c("z", "y", "n", "q", "r", "l", "e", "d"),
sheet=c("a", "a","b", "b", "b", "c", "c", "c")
)
head(df)
#> # A tibble: 6 x 2
#> name sheet
#> z a
#> y a
#> n b
#> q b
#> r b
#> l c
我想使用purrr进行此操作,但我仍处于学习阶段。任何帮助,将不胜感激!
一个选择是承配它list
,解压names
,enframe
以一个两列data.frame
,并且unnest
所述“值”列
library(tidyverse)
lst(a, b, c) %>%
map(names) %>%
enframe %>%
unnest
如果我们也需要一class
列
lst(a, b, c) %>%
map_dfr(~ tibble(name = names(.x), Class = map_chr(.x, class)),
.id = 'grp')
在 base R
stack(lapply(mget(c('a', 'b', 'c')), names))[2:1]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句