我有一个巨大的列表,上面列出了我从运行 for 循环中输出的各种 tibbles。此列表中的小标题是使用count()
和的结果group_by_()
,并按类别显示a
在各种设施中工作和不工作的人数,但列表中的每个元素都有可变数量的行和名称不同的一列。
这些是我(20 多个元素)列表中的三个元素:
library(plyr)
library(tidyverse)
(Hospital1 <- tibble(a = c("In.City", "In.City", "Likely Move", "Likely Move", "Possibly Move", "Unlikely Move", "Unlikely Move", NA),
Something.Hospital1 = c("Hospital1", NA, "Hospital1", NA, NA, "Hospital1", NA, NA),
n= c(sample(1:100, 8, replace = TRUE))))
(Hospital2 <- tibble(a = c("In.City", "In.City", "Likely Move", "Likely Move", "Possibly Move", "Unlikely Move", NA),
Something.Hospital2 = c("Hospital2", NA, "Hospital2", NA, NA, NA, NA),
n= c(sample(1:100, 7, replace = TRUE))))
(Hospital3 <- tibble(a = c("In.City", "Likely Move", "Unlikely Move", "Possibly Move", NA),
Something.Hospital3 = as.character(c(NA, NA, NA, NA, NA)),
n= c(sample(1:100, 5, replace = TRUE))))
#What my data actually looks like
(example.list <- list(Hospital1, Hospital2, Hospital3))
n
第 3 列中不NA
与每个列表元素的第二列中的值相邻的值最重要。到目前为止,我真的很难将这些变成 ggplot2 可以使用它们的形式。因为我正在使用大约 20 个列表元素,所以我觉得我需要在代码中使用列表结构,并且能够在需要时迭代或创建函数。我试图:
1)使用cbind(example.list[[1:3]])
and bind_cols([[1:3]])
, 将它们绑定到一个 tibble 中,尽管由于行数不同(与单括号相同),两者都失败了。
2)单独绘制这些元素,尽管 ggplot2 列表失败。
3)使用 将它们拆分为单独的数据框,list2env(example.list[1:3], envir = .GlobalEnv)
但这给了我错误
names(x) must be a character vector of the same length as x
4)做一个for循环left_join()
,但要这样做,我需要一个键,我可以使用类似于cumsum()
字符单元格的东西来形成它。那必须看起来像这样
a Something.Hospital1 n match.key
<chr> <chr> <int> <dbl>
1 In.City Hospital1 40 1
2 In.City <NA> 25 2
3 Likely Move Hospital1 17 1
4 Likely Move <NA> 56 2
5 Possibly Move Hospital1 59 1
5)我尝试使用ddply(output[[10]], .(crosstab, n), nrow)
,但 V1 对这样的合并没有帮助。
crosstab n V1
1 In.Camden 14 1
2 In.Camden 139 1
3 Likely Move 4 1
4 Likely Move 171 1
在我看来,我希望我的数据看起来像这样,列出所有的可能性。然后我可以用tidyr()
它来把它变成 ggplot 形式
a Something.Hospital1 n1 Something.Hospital2 n2 Something.Hospital3 n3
<chr> <chr> <int> <chr> <int> <chr> <int>
1 In.City Hospital1 39 Hospital2 24 Hospital3 13
2 In.City <NA> 86 <NA> 82 <NA> 85
3 Likely Move Hospital1 77 Hospital2 16 Hospital3 17
4 Likely Move <NA> 4 <NA> 78 <NA> 49
5 Possibly Move Hospital1 100 Hospital2 79 Hospital3 95
6 Possibly Move <NA> 49 <NA> 31 <NA> 62
7 Unlikely Move Hospital1 82 Hospital2 3 Hospital3 96
8 Unlikely Move <NA> 27 <NA> 30 <NA> 39
9 <NA> <NA> 55 <NA> 96 <NA> 47
我完全不理解lapply
和相关,所以如果你建议它们,请清楚如何使用它们。我更喜欢 dplyr,因为这是我最了解的。
非常感谢你的帮助