首页 > 解决方案 > 如何收集数据框以使列成为单列

问题描述

我有这个数据:

structure(list(id = 1:6, arthritis = c(1L, 0L, 0L, 0L, 0L, 1L
), asthma = c(0L, 0L, 0L, 0L, 0L, 0L), cancer = c(0L, 0L, 0L, 
0L, 0L, 0L), cerebvascdz = c(0L, 0L, 0L, 0L, 0L, 0L), chf = c(0L, 
0L, 0L, 0L, 0L, 0L), crf = c(0L, 0L, 0L, 0L, 0L, 0L), copd = c(0L, 
0L, 0L, 0L, 0L, 0L), depression = c(0L, 0L, 0L, 1L, 1L, 1L), 
    diabetes = c(0L, 0L, 0L, 0L, 0L, 0L), hyperlipid = c(1L, 
    0L, 1L, 0L, 1L, 0L), htn = c(1L, 0L, 1L, 1L, 0L, 1L), ihd = c(1L, 
    0L, 0L, 0L, 0L, 0L), obesity = c(0L, 0L, 0L, 0L, 0L, 0L), 
    osteoporosis = c(0L, 0L, 0L, 0L, 0L, 1L)), row.names = c(NA, 
6L), class = "data.frame")

其中包含患者的 id。其余所有列都是患者可能患有的合并症,指定为布尔值。我正在尝试使用gather 方法来翻转桌子,如下所示。患者患有的每种合并症都应该在右侧填充,患者 ID 在左侧。

我很确定我应该使用收集功能,但我似乎无法让它工作。有没有人知道我应该做什么才能让帧切换到所需的格式?

标签: r

解决方案


这是正确的代码

pmh %>% 
  gather(diagnosis,num, arthritis:osteoporosis) %>% 
  arrange(id) %>% 
  filter(num == 1)

我是 R 新手,我想我误解了 collect 的第一个论点。


推荐阅读