gpt4 book ai didi

r - 如何 reshape 垂直表

转载 作者:行者123 更新时间:2023-12-04 07:32:30 27 4
gpt4 key购买 nike

我想用患者信息 reshape 表格。我试过xtabs来自 基础 R acast来自 reshape 2 ,但无法得到结果。我的 table 看起来像这样:


变量1
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

手术 Material
不适用
4.0
754.6


正如您所看到的,有些患者可能进行了手术,有些则没有,在这种情况下,甚至没有在患者姓名下提及。 id 旁边的数字 0021 0154 是该患者的数量和总价格的总数,新表中不需要此信息。我认为以后可以很容易地计算总数。决赛 table 应如下所示:


ID
药品价格
医疗产品价格
解决方案价格
手术 Material 价格
药品数量(等)


0021
15.8
150.0
4.5
0
3.0

0154
37.4
0
0
754.6
7.0


因此,该函数必须用 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

关于r - 如何 reshape 垂直表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67881262/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com