[英]view or display lists side-by-side in R
有没有办法并排查看列表? 我正在比较同一数据集的两个版本,并希望查看变量的摘要打印。 理想情况下,提供两个以上数据集的能力会很好,如果有额外的变量不在其中一个数据集中,这些将在输出的末尾。
library(tidyverse)
library(janitor)
df1 <- data.frame(var1 = c("a", "b"),
var2 = c("A", "B"),
var3 = c("checking"))
df1
df2 <- data.frame(var1 = letters,
var2 = LETTERS,
var4 = c("testing"))
df2
ll <- lst(df1, df2)
compare_these_lists <- map(ll, ~dplyr::select_if(.x, is.factor) %>% map(., tabyl))
compare_these_lists
我想要的结果是每个变量都对齐的结果,因此它们可以很容易地进行比较:
$df1 $df2
$df1$var1 $df2$var1
.x[[i]] n percent .x[[i]] n percent
a 1 0.5 a 1 0.03846154
b 1 0.5 b 1 0.03846154
c 1 0.03846154
d 1 0.03846154
e 1 0.03846154
f 1 0.03846154
g 1 0.03846154
h 1 0.03846154
i 1 0.03846154
j 1 0.03846154
k 1 0.03846154
l 1 0.03846154
m 1 0.03846154
n 1 0.03846154
o 1 0.03846154
p 1 0.03846154
q 1 0.03846154
r 1 0.03846154
s 1 0.03846154
t 1 0.03846154
u 1 0.03846154
v 1 0.03846154
w 1 0.03846154
x 1 0.03846154
y 1 0.03846154
z 1 0.03846154
$df1$var2 $df2$var2
.x[[i]] n percent .x[[i]] n percent
A 1 0.5 A 1 0.03846154
B 1 0.5 B 1 0.03846154
C 1 0.03846154
D 1 0.03846154
E 1 0.03846154
F 1 0.03846154
G 1 0.03846154
H 1 0.03846154
I 1 0.03846154
J 1 0.03846154
K 1 0.03846154
L 1 0.03846154
M 1 0.03846154
N 1 0.03846154
O 1 0.03846154
P 1 0.03846154
Q 1 0.03846154
R 1 0.03846154
S 1 0.03846154
T 1 0.03846154
U 1 0.03846154
V 1 0.03846154
W 1 0.03846154
X 1 0.03846154
Y 1 0.03846154
Z 1 0.03846154
$df1$var3
.x[[i]] n percent
checking 2 1
$df2$var4
.x[[i]] n percent
testing 26 1
我能找到的唯一类似问题是here ,它很旧,但变量在该解决方案中跳跃,因此它们不会对齐,如果您有很多变量,则很难进行比较。
是否已经有一个功能可以做这样的事情或任何好的解决方法? 我在想一些带有purrr
东西可能会做到。
谢谢
这是一个tidyverse
解决方案:
你的代表:
library(tidyverse)
library(janitor)
df1 <- data.frame(var1 = c("a", "b"),
var2 = c("A", "B"),
var3 = c("checking"))
df1
df2 <- data.frame(var1 = letters,
var2 = LETTERS,
var4 = c("testing"))
创建一个键来加入数据帧:
df1 <- as_tibble(df1)
df1 <- df1 %>% rownames_to_column(var = "key")
df2 <- as_tibble(df2)
df2 <- df2 %>% rownames_to_column(var = "key")
full_join 比较:
df_compare <- full_join(df1, df2, by = "key")
print(df_compare)
这让我足够接近
library(tidyverse)
flatten(compare_these_lists) %>%
map( ~ .x %>% mutate(id = row_number())) %>%
imap(~set_names(.x, ifelse(names(.x) != "id", paste(.y, names(.x), sep = "_"), names(.x)))) %>%
reduce(full_join, by = 'id') %>%
{map(set_names(c("var1", "var2", "var3", "var4")), function(.x) dplyr::select(., contains(.x)))}
# $var1
# var1_.x[[i]].x var1_n.x var1_percent.x var1_.x[[i]].y var1_n.y var1_percent.y
# 1 a 1 0.5 a 1 0.03846154
# 2 b 1 0.5 b 1 0.03846154
# 3 <NA> NA NA c 1 0.03846154
# 4 <NA> NA NA d 1 0.03846154
# 5 <NA> NA NA e 1 0.03846154
# 6 <NA> NA NA f 1 0.03846154
# 7 <NA> NA NA g 1 0.03846154
# 8 <NA> NA NA h 1 0.03846154
# 9 <NA> NA NA i 1 0.03846154
# 10 <NA> NA NA j 1 0.03846154
# 11 <NA> NA NA k 1 0.03846154
# 12 <NA> NA NA l 1 0.03846154
# 13 <NA> NA NA m 1 0.03846154
# 14 <NA> NA NA n 1 0.03846154
# 15 <NA> NA NA o 1 0.03846154
# 16 <NA> NA NA p 1 0.03846154
# 17 <NA> NA NA q 1 0.03846154
# 18 <NA> NA NA r 1 0.03846154
# 19 <NA> NA NA s 1 0.03846154
# 20 <NA> NA NA t 1 0.03846154
# 21 <NA> NA NA u 1 0.03846154
# 22 <NA> NA NA v 1 0.03846154
# 23 <NA> NA NA w 1 0.03846154
# 24 <NA> NA NA x 1 0.03846154
# 25 <NA> NA NA y 1 0.03846154
# 26 <NA> NA NA z 1 0.03846154
# $var2
# var2_.x[[i]].x var2_n.x var2_percent.x var2_.x[[i]].y var2_n.y var2_percent.y
# 1 A 1 0.5 A 1 0.03846154
# 2 B 1 0.5 B 1 0.03846154
# 3 <NA> NA NA C 1 0.03846154
# 4 <NA> NA NA D 1 0.03846154
# 5 <NA> NA NA E 1 0.03846154
# 6 <NA> NA NA F 1 0.03846154
# 7 <NA> NA NA G 1 0.03846154
# 8 <NA> NA NA H 1 0.03846154
# 9 <NA> NA NA I 1 0.03846154
# 10 <NA> NA NA J 1 0.03846154
# 11 <NA> NA NA K 1 0.03846154
# 12 <NA> NA NA L 1 0.03846154
# 13 <NA> NA NA M 1 0.03846154
# 14 <NA> NA NA N 1 0.03846154
# 15 <NA> NA NA O 1 0.03846154
# 16 <NA> NA NA P 1 0.03846154
# 17 <NA> NA NA Q 1 0.03846154
# 18 <NA> NA NA R 1 0.03846154
# 19 <NA> NA NA S 1 0.03846154
# 20 <NA> NA NA T 1 0.03846154
# 21 <NA> NA NA U 1 0.03846154
# 22 <NA> NA NA V 1 0.03846154
# 23 <NA> NA NA W 1 0.03846154
# 24 <NA> NA NA X 1 0.03846154
# 25 <NA> NA NA Y 1 0.03846154
# 26 <NA> NA NA Z 1 0.03846154
# $var3
# var3_.x[[i]] var3_n var3_percent
# 1 checking 2 1
# 2 <NA> NA NA
# 3 <NA> NA NA
# 4 <NA> NA NA
# 5 <NA> NA NA
# 6 <NA> NA NA
# 7 <NA> NA NA
# 8 <NA> NA NA
# 9 <NA> NA NA
# 10 <NA> NA NA
# 11 <NA> NA NA
# 12 <NA> NA NA
# 13 <NA> NA NA
# 14 <NA> NA NA
# 15 <NA> NA NA
# 16 <NA> NA NA
# 17 <NA> NA NA
# 18 <NA> NA NA
# 19 <NA> NA NA
# 20 <NA> NA NA
# 21 <NA> NA NA
# 22 <NA> NA NA
# 23 <NA> NA NA
# 24 <NA> NA NA
# 25 <NA> NA NA
# 26 <NA> NA NA
# $var4
# var4_.x[[i]] var4_n var4_percent
# 1 testing 26 1
# 2 <NA> NA NA
# 3 <NA> NA NA
# 4 <NA> NA NA
# 5 <NA> NA NA
# 6 <NA> NA NA
# 7 <NA> NA NA
# 8 <NA> NA NA
# 9 <NA> NA NA
# 10 <NA> NA NA
# 11 <NA> NA NA
# 12 <NA> NA NA
# 13 <NA> NA NA
# 14 <NA> NA NA
# 15 <NA> NA NA
# 16 <NA> NA NA
# 17 <NA> NA NA
# 18 <NA> NA NA
# 19 <NA> NA NA
# 20 <NA> NA NA
# 21 <NA> NA NA
# 22 <NA> NA NA
# 23 <NA> NA NA
# 24 <NA> NA NA
# 25 <NA> NA NA
# 26 <NA> NA NA
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.