[英]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.