【发布时间】:2020-08-14 13:55:26
【问题描述】:
我有一个这样的数据集,我使用时间序列聚类将它变成了一个巨大的树状图:
DF<-structure(list(`Smith, Sumner` = c(" 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 1", " 1", " 1", " 1", " 2", " 3", " 7",
" 15", " 22", " 25", " 31", " 32", " 40", " 41", " 45", " 47",
" 48", " 48", " 49", " 49", " 49", " 49", " 49", " 49"), `Fizzle III, Joseph` = c(" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 5", " 6", " 7", " 9", " 9", " 11", " 21", " 25", " 33",
" 38", " 44", " 51", " 54", " 57", " 60", " 61", " 67", " 72",
" 73", " 73"), `johnson, Barry` = c(" 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 1", " 5", " 7",
" 11", " 12", " 17", " 20", " 21", " 24", " 25", " 28", " 28",
" 28", " 28", " 28", " 31", " 31", " 33", " 33", " 33"), `peanut, Mark` = c(" 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 1", " 2", " 5", "10", "18",
"22", "23", "27", "28", " 30", " 34", " 42", " 44", " 48", " 51",
" 62", " 64", " 65", " 66", " 67", " 68", " 73", " 75", " 76",
" 81", " 86", " 89", " 89", " 92", " 94", "102", "111", "118",
"133", "141", "146", "157", "158", "158", "158", "158", "158",
"158", "158"), `alpha, John A` = c(" 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 6", " 11", " 13", " 15", " 17", " 20", " 31",
" 35", " 41", " 46", " 53", " 59", " 69", " 87", " 91", " 93",
"103", "127", "133", "133", "133", "133", "133", "133", "133"
), `barry, Lloyd Alan` = c(" 0", " 0", " 0", " 1", " 2", " 2",
" 3", " 3", " 3", " 3", " 3", " 5", " 7", "11", "13", "18", " 23",
" 23", " 23", " 27", " 28", " 31", " 32", " 32", " 33", " 33",
" 33", " 33", " 33", " 33", " 33", " 33", " 33", " 33", " 33",
" 33", " 33", " 33", " 33", " 33", " 33", " 33", " 33", " 33",
" 33", " 33", " 33", " 33", " 33", " 33", " 33"), `smith, EK` = c(" 0",
" 0", " 2", " 3", " 3", " 3", " 4", " 6", " 6", " 6", " 6", " 6",
" 6", " 7", "14", "15", " 18", " 25", " 28", " 29", " 33", " 37",
" 45", " 49", " 51", " 54", " 61", " 65", " 65", " 70", " 75",
" 79", " 79", " 81", " 82", " 83", " 87", " 89", " 89", " 91",
" 91", " 91", " 91", " 93", " 95", " 95", " 98", " 98", " 99",
"100", "100"), `parvin, Eric David` = c(" 0", " 0", " 0", " 0",
" 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0", " 0",
" 0", " 0", " 4", " 6", " 6", " 6", " 6", " 6", " 6",
" 6", " 6", " 6", " 6", " 6", " 6", " 7", " 7", " 9",
" 10", " 10", " 10", " 10", " 10", " 10", " 10", " 10", " 10",
" 10", " 10", " 10", " 10", " 10", " 10", " 10", " 10", " 10"
), `Burgess, Gary` = c(" 0", " 0", " 0", " 1", " 1", " 1",
" 1", " 1", " 1", " 1", " 1", " 1", " 1", " 1", " 1", " 3", " 5",
" 5", " 5", " 6", " 7", " 7", " 8", " 8", " 8", " 9",
" 9", " 9", " 9", " 11", " 11", " 11", " 11", " 12", " 12",
" 14", " 14", " 15", " 15", " 17", " 17", " 17", " 18", " 18",
" 18", " 18", " 18", " 18", " 18", " 18", " 18"), `smith, john` = c(" 0",
" 0", " 0", " 0", " 1", " 1", " 3", " 6", " 6", " 6", " 8", " 8",
" 8", " 8", " 8", " 8", " 8", " 8", " 8", " 9", " 10", " 11",
" 13", " 14", " 16", " 16", " 17", " 18", " 18", " 19", " 20",
" 20", " 20", " 21", " 21", " 22", " 22", " 22", " 22", " 22",
" 22", " 22", " 22", " 22", " 22", " 22", " 22", " 22", " 22",
" 22", " 22")), row.names = c(NA, -51L), class = c("tbl_df",
"tbl", "data.frame"))
附:任何人都知道为什么当我从 RStudio 复制时它会如此奇怪地粘贴?有巨大的空间?
无论如何,在数据中,每一列都是一个人(名字应该打乱),行代表年份,每年发生一定数量的事件。我使用时间序列聚类与真实数据集(数百列)来创建将最相似的列组合在一起的树状图。我可以在如下所示的数据框中访问该分组:
DF2<-structure(list(type_col = c("Smith, Sumner", "josephs, Joseph",
"smith, Barry", "johnson, Mark", "Peanut, John A", "smithy, Lloyd Alan",
"john, EK", "Amistad, Eric David", "Hotdog, Gary ", "Jones, SMith"
), cluster_group = c(1L, 2L, 2L, 1L, 3L, 3L, 1L, 1L, 2L, 1L)), row.names = c(NA,
10L), class = "data.frame")
所以这向我显示了名称(我很抱歉这些名称与其他示例数据中显示的名称不完全相同)及其各自的组。
我想做的就是绘制这样的图(忽略“90 年代”和“80 年代”,上面写着 A 或 B,我希望分别是第 1 组或第 2 组)
我会在哪里获取每个相应的组,然后“平均”他们的数据以随着时间的推移为每个组创建一条线。那有意义吗?我知道 ggplot 可以使用“分组”变量,而且我也知道多个 geom_lines 可以在一个图形上,但除此之外我完全迷失了。救命!
【问题讨论】:
-
您想要的只是
DF2中的名称的绘图,并避免所有介于 80 和 90 之间的值? -
对不起,80 和 90 与我的问题无关(恰好在我用作示例的照片中,我应该使用更好的照片)。我特别想要的是:假设我知道(基于 DF2)barry smith 和 joseph josephs 属于同一组(比如说 group2)。因此,根据 DF 中的信息,它将为这些人取两列,然后平均他们在每一行中的内容。每行的这个新平均值将是 group2 的图表。它将为每个组执行此操作。因此,该图将为每个组提供一条线。这有意义吗?
-
而
DF2中没有模糊含义的DF的名称是仅一组还是一组或其他? -
我应该花时间研究这些名字。实际上,DF 和 DF2 之间的名称绝对总是匹配的,DF2 是从 DF 生成的。看起来它们可能并不总是匹配的原因是我匆忙把它放在这里,为了匿名,我手动更改了名称,并且没有做好。对不起
标签: r ggplot2 time-series