首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据每行中的值透视数据

如何根据每行中的值透视数据
EN

Stack Overflow用户
提问于 2020-09-23 03:03:25
回答 1查看 23关注 0票数 1

假设我们得到了一个这样的数据帧:

代码语言:javascript
复制
> 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,它们本身表示根据某个任意变量对来自每个Location的样本进行分类的5个聚类。因此,每列的总和告诉我们每个Location有多少个样本。例如,Location == a有10个样本,其中7个属于C1,3个属于C3

我想创建一个列联表来执行独立性的卡方检验,以查看Location和集群分配是否独立。当数据以这种格式记录时,我们如何对数据进行重塑呢?

更新:除非有更简单的方法根据每行中的值从当前格式中获取列联表(可以直接对其执行卡方检验),否则我希望我们必须将其转换为整洁的格式,其中有两列LocationCluster,每个原始样本有一个观察值,因此输出将如下所示:

代码语言:javascript
复制
#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
....

由此,我们可以制作一个列联表并执行卡方检验

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-23 03:23:34

我们可以重塑为'long‘格式,并使用uncount来复制行

代码语言:javascript
复制
library(dplyr)
library(tidyr)
data %>%
   pivot_longer(cols = -Location, names_to = 'Cluster', values_drop_na = TRUE) %>%
   uncount(value)
# A tibble: 251 x 2
#   Location Cluster
#   <fct>    <chr>  
# 1 a        C1     
# 2 a        C1     
# 3 a        C1     
# 4 a        C1     
# 5 a        C1     
# 6 a        C1     
# 7 a        C1     
# 8 a        C3     
# 9 a        C3     
#10 a        C3     
# … with 241 more rows
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64016168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档