首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据R中的数据创建应急表

根据R中的数据创建应急表
EN

Stack Overflow用户
提问于 2022-10-27 03:15:15
回答 2查看 25关注 0票数 0

我有一个如下所示的数据集:

代码语言:javascript
运行
复制
   name  status
1  john    sick
2  john    sick
3  john healthy
4  john    sick
5  john healthy
6  alex    sick
7  alex    sick
8   tim healthy
9   tim healthy
10  tim    sick
11  tim    sick

对于这个数据集,我想知道人们离开的次数:

  • 病到病
  • 病到healthy
  • healthy病

例如:

生病:约翰(生病,生病),亚历克斯(生病,生病),蒂姆(生病,生病)=发生在数据集中3倍Times

  • Healthy (生病,生病):约翰(生病,健康),约翰(生病,健康)=发生在数据集2中,健康:蒂姆(健康,健康)=在数据集中发生:健康,健康,生病:约翰(健康,生病),蒂姆(健康,生病)=发生在数据集中2倍

我不知道如何处理这个问题,在R-谁能建议如何做到这一点?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-27 03:31:03

我将使用dplyr::lag()count()来处理这个问题。

代码语言:javascript
运行
复制
library(dplyr)
library(tidyr)

df1 %>%
  group_by(name) %>%
  mutate(from = dplyr::lag(status)) %>%
  ungroup() %>%
  count(from, to = status) %>%
  drop_na()

输出:

代码语言:javascript
运行
复制
# A tibble: 4 × 3
  from    to          n
  <chr>   <chr>   <int>
1 healthy healthy     1
2 healthy sick        2
3 sick    healthy     2
4 sick    sick        3
票数 1
EN

Stack Overflow用户

发布于 2022-10-27 03:42:07

从技术上讲,应急表是一个包含两个(或多个)维度条目的表。因此:

代码语言:javascript
运行
复制
ct <- table(
  do.call(rbind, by(data, data$name, function(x) 
    data.frame(from = head(x$status, -1), to = tail(x$status, -1)))))

ct
#>          to
#> from      healthy sick
#>   healthy       1    2
#>   sick          2    3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74216387

复制
相关文章

相似问题

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