微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何重塑垂直表

如何解决如何重塑垂直表

我想用患者信息重新整理表格。我已经尝试了 base Rxtabsreshape2acast,但没有得到结果。我的桌子看起来像这样:

var1 id 数量 价格
患者姓名 1 0021 7.0 167.3
药物 不适用 3.0 15.8
医疗产品 不适用 1.0 150.0
解决方 不适用 3.0 4.5
患者姓名 2 0154 11.0 792.0
药物 不适用 7.0 37.4
手术材料 不适用 4.0 754.6

正如您所看到的,有些患者可能进行了手术,有些则没有,在这种情况下,甚至没有在患者的姓名下提及它。 id 00210154 旁边的数字是数量总价格耐心,新表中不需要此信息。我认为稍后可以轻松计算总数。决赛桌应如下所示:

ID 药品价格 医疗产品价格 解决方案价格 手术材料价格 药品数量(等)
0021 15.8 150.0 4.5 0 3.0
0154 37.4 0 0 754.6 7.0

因此,该函数必须用 0 填充遗漏的变量,并且必须是垂直的。

解决方法

您可以fill id 值并以宽格式获取数据。

library(dplyr)
library(tidyr)

df %>%
  fill(id) %>%
  pivot_wider(names_from = var1,values_from = c(quantity,price),values_fill = 0)
,
library(dplyr)
library(tidyr)

df %>% 
  fill(id) %>% 
  filter(var1 %in% c("Drugs","Medical products","Solutions","Surgical materials")) %>% 
  pivot_wider(names_from = var1,values_from = c(price,quantity),names_glue = "{var1} {.value}",values_fill = 0) %>% 
  mutate(id = sprintf("%04d",id))

这给了我们:

# A tibble: 2 x 9
  id    `Drugs price` `Medical products p~ `Solutions price` `Surgical materials ~ `Drugs quantity` `Medical products q~ `Solutions quant~ `Surgical materials ~
  <chr>         <dbl>                <dbl>             <dbl>                 <dbl>            <dbl>                <dbl>             <dbl>                 <dbl>
1 0021           15.8                  150               4.5                    0                 3                    1                 3                     0
2 0154           37.4                    0               0                    755.                7                    0                 0                     4

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。