如何收集数据框以使列成为单个列

时间:2019-02-15 18:35:54

标签: r

我有此数据:

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。其余所有列都是患者可能患有的合并症,以布尔值表示。 我正在尝试使用collect方法翻转表as shown like this。患者的每种合并症都应在右侧填充,患者编号在左侧。

我很确定我应该使用collect函数,但是似乎无法正常工作。有没有人知道我应该怎么做才能将帧切换到所需的格式?

1 个答案:

答案 0 :(得分:1)

这是正确的代码

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

我是R的新手,我认为我误会了collect的第一个论点。