【发布时间】:2020-09-22 19:03:24
【问题描述】:
假设我们有一个这样的数据框:
> dput(data)
structure(list(Location = structure(1:18, .Label = c("a", "b",
"c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
"p", "q", "r"), class = "factor"), C1 = c(7L, NA, 3L, 7L, NA,
NA, 2L, 7L, NA, NA, NA, NA, 2L, NA, NA, NA, NA, NA), C2 = c(NA,
8L, 1L, 1L, NA, 9L, 1L, 1L, NA, 1L, NA, 4L, 1L, NA, NA, NA, NA,
1L), C3 = c(3L, 1L, 7L, NA, NA, NA, 7L, 2L, 5L, 4L, 9L, 10L,
3L, 2L, 1L, 7L, NA, NA), C4 = c(NA, 2L, NA, 2L, 2L, 1L, 1L, 8L,
8L, 5L, 6L, 15L, 15L, 5L, 5L, 2L, 15L, NA), C5 = c(NA, NA, NA,
NA, 8L, NA, 2L, NA, 4L, 10L, 3L, 3L, 1L, NA, NA, 3L, NA, 8L)), class = "data.frame", row.names = c(NA,
-18L))
记录数据的方式,我们有一个Location 列,它表示一个已知的分组变量,级别为a:r。然后我们有列C1:C5,它们本身代表5个集群,每个Location的样本根据一些任意变量进行分类。因此,每列的总和表明每个Location 有多少样本。比如Location == a有10个样本,其中7个被分类到C1,3个被分类到C3。
我想创建一个列联表来执行卡方独立性检验,看看Location 和集群分配是否独立。当数据以这种格式记录时,我们如何重塑数据来做到这一点?
更新:
除非有一种更简单的方法可以根据每行中的值(可以直接对其执行卡方检验)从当前格式获取列联表,否则我希望我们必须将其转换为整洁的格式,其中有两列 Location 和 Cluster 以及每个原始样本的一个观察值,因此输出如下所示:
#there would be 10 observations for location a, 11 observations for b, and so on
Location Cluster
a C1
a C1
a C1
a C1
a C1
a C1
a C1
a C3
a C3
a C3
b C2
b C2
b C2
b C2
b C2
b C2
b C2
b C2
b C3
b C4
b C4
....
由此我们可以制作一个列联表并执行卡方检验
【问题讨论】:
-
你想对丢失的单元格做什么?更不用说所有非常小的细胞?如果不以某种方式崩溃,我看不出您如何对
Location ~ cluster做出任何类型的推断,您可以想象在行 或 列上测试 GoF,但您的数据太少,无法进行独立或关联
标签: r dplyr chi-squared