【发布时间】:2019-02-08 10:19:08
【问题描述】:
我有一组患有多种健康状况的人的数据集。个人要么做(1)要么不(0)有每个条件(我的真实数据集有14个)。我想做的是总结数据,这样我就知道成对的条件发生的频率。请注意,有些人可能有三个或四个条件,但我感兴趣的是成对共现。然后我想将其绘制为热图。
我怀疑解决方案涉及 tidyr 的“收集”功能,但我无法解决。这是我的输入的外观和我想要实现的示例:
这里有一些关于个人的数据,以及他们是否有条件“a”、“b”或“c”:
library(tidyverse)
library(viridis)
dat <- tibble(
id = c(1:15),
a = c(1,0,0,0,1,1,1,0,1,0,0,0,1,0,1),
b = c(1,0,0,1,1,1,0,0,1,0,0,1,1,0,1),
c = c(0,0,1,1,0,1,0,1,0,1,1,0,1,1,0))
我想总结一下每种情况发生的频率,以及它们同时发生的频率。在这种情况下,很明显,条件“a”和“b”同时出现的频率高于其中任何一个与“c”一起出现的频率,后者通常单独出现。下面是我想象中的数据在可绘图格式中的样子。第一列是“变量 1”,第二列是“变量 2”,第三列是这些变量一起出现的频率。下面是我脑海中的情节。
plotdat <- tibble(
var1 = c("a", "a", "a", "b", "b", "c"),
var2 = c("a", "b", "c", "b", "c", "c"),
count = c(7, 6, 2, 8, 3, 8))
ggplot(plotdat) +
geom_tile(aes(var1, var2, fill = count)) +
scale_fill_viridis()
也许这根本不是正确的方法,我实际上需要将数据转换为 3x3 矩阵。任何可能的解决方案将不胜感激!
【问题讨论】: