首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将r中的一个因素列转换为多个二分列

将r中的一个因素列转换为多个二分列
EN

Stack Overflow用户
提问于 2020-11-17 05:37:31
回答 1查看 47关注 0票数 0

我有一个包含PatientID及其诊断的数据集,它们如下:

代码语言:javascript
复制
Id  Diagnoses
1   Nerve conditions (e.g., Multiple sclerosis, myasthenia gravis, Guillain-Barre syndrome, demyelinating polyneuropathy)
2   Gastrointestinal conditions (e.g., irritable bowl disease, ulcerative colitis, Chron's disease),Heart conditions,High blood pressure,Migraines/headaches
3   Heart conditions,Traumatic brain injury
4   Chronic pain,Heart conditions,Post-traumatic Stress Disorder (PTSD),Traumatic brain injury
5   Anxiety,Chronic pain,Depression,Sleep apnea
6   High blood pressure
7   High blood pressure

如何将Diagnoses列拆分如下:

代码语言:javascript
复制
Id  Anxiety       Depression      Nerve conditions  Sleep apnea Chronic Diseases  AND SO ON....
1   0               0              0                 1            1                
2   1               1              1                 1            1             
3   1               1              1                 1            0
4   0               0              1                 1            1          
5   1               0              0                 0            1         
6   1               1              1                 0            1         
7   1               1              0                 1            0

我尝试过这段代码,但没有得到结果:

代码语言:javascript
复制
df %>%
   separate_rows(Diagnoses, sep=",") %>% 
   separate(Q2.3, into = c("Anxiety", "Depression, "THE REST OF CONDITIONS"), sep=":\\s*") %>% 
   mutate(anxiety1 = str_c("Anxiety", Anxiety)) 

我很感谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-17 05:49:42

这是否有效:

代码语言:javascript
复制
library(stringr)
library(dplyr)
library(tidyr)
df %>% mutate(Diagnoses = str_remove(Diagnoses, ' \\(.*\\)?')) %>% 
separate_rows(Diagnoses, sep = ',') %>% count(Id, Diagnoses, name = 'Cnt') %>% 
pivot_wider(id_cols = Id, names_from = Diagnoses, values_from = Cnt, values_fill = list(Cnt = 0))
# A tibble: 7 x 11
     Id `Nerve condition~ `Gastrointestina~ `Heart conditio~ `Traumatic brai~ `Chronic pain` `Post-traumatic ~ Anxiety Depression `Sleep apnea` `High blood pre~
  <dbl>             <int>             <int>            <int>            <int>          <int>             <int>   <int>      <int>         <int>            <int>
1     1                 1                 0                0                0              0                 0       0          0             0                0
2     2                 0                 1                0                0              0                 0       0          0             0                0
3     3                 0                 0                1                1              0                 0       0          0             0                0
4     4                 0                 0                1                0              1                 1       0          0             0                0
5     5                 0                 0                0                0              1                 0       1          1             1                0
6     6                 0                 0                0                0              0                 0       0          0             0                1
7     7                 0                 0                0                0              0                 0       0          0             0                1
> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64869887

复制
相关文章

相似问题

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