目標としては、セルに2つ表示されるのではなく該当する月に同じ(物)プロダクトがある場合はpatientidを2行にし、一つのセルに一つのプロダクトとしたい
row_id
列(row_number()
)を追加してから pivot_wider()
を実行します。この様にすることで、patientid
+ row_id
(pivot_wider()
におけるインデックス値)がユニークになるので期待する出力になるかと思います。
r
1suppressMessages(library(tidyverse))
2
3A <- data.frame(
4patientid = c(1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4),
5receiptname = c('a', 'b', 'a', 'c', 'd', 'b', 'd', 'a', 'c', 'd', 'b'),
6actdate = as.Date(c('2020-01-15', '2020-01-15', '2020-02-20', '2020-03-10', '2020-03-10', '2020-04-05', '2020-05-25', '2020-05-25',
7'2020-06-17', '2020-07-19', '2020-07-19'))
8)
9
10A <- A |>
11 mutate(year_month = format(actdate, "%Y-%m")) |>
12 select(-actdate) |>
13 # add unique id
14 mutate(row_id = row_number()) |>
15 pivot_wider(
16 names_from = year_month,
17 names_sort = TRUE,
18 values_from = receiptname
19 ) |>
20 select(-row_id) |>
21 drop_na(patientid) |>
22 unite("receiptname", !patientid, remove = FALSE, na.rm = TRUE)
23
24A
25
26# # A tibble: 11 × 9
27# patientid receiptname `2020-01` `2020-02` `2020-03` `2020-04` `2020-05` `2020-06` `2020-07`
28# <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
29# 1 1 a a <NA> <NA> <NA> <NA> <NA> <NA>
30# 2 1 b b <NA> <NA> <NA> <NA> <NA> <NA>
31# 3 2 a <NA> a <NA> <NA> <NA> <NA> <NA>
32# 4 2 c <NA> <NA> c <NA> <NA> <NA> <NA>
33# 5 2 d <NA> <NA> d <NA> <NA> <NA> <NA>
34# 6 3 b <NA> <NA> <NA> b <NA> <NA> <NA>
35# 7 3 d <NA> <NA> <NA> <NA> d <NA> <NA>
36# 8 3 a <NA> <NA> <NA> <NA> a <NA> <NA>
37# 9 4 c <NA> <NA> <NA> <NA> <NA> c <NA>
38# 10 4 d <NA> <NA> <NA> <NA> <NA> <NA> d
39# 11 4 b <NA> <NA> <NA> <NA> <NA> <NA> b
追記
EXCELに出力した時にaがあるセルは黄色、bがあるセルは青色、cがあるセルは赤色、dがあるセルは紫色に…
A[row - 1, col - 1]
ではなく A[row - 1, col]
ではないかと思います。
r
1for (row in 2:(nrow(A) + 1)) {
2 for (col in 2:ncol(A)) {
3 cell_value <- A[row - 1, col]
4 style <- setColor(cell_value)
5 if (!is.null(style)) {
6 addStyle(wb, sheet = 1, style = style, rows = row, cols = col, gridExpand = TRUE)
7 }
8 }
9}
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-07-17/f88fedad-e0da-4ac4-8dbb-841bb57643e4.png)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/07/11 02:18
2024/07/11 02:20
2024/07/11 02:54
2024/07/11 08:35
2024/07/11 17:08
2024/07/12 06:44
2024/07/17 02:04 編集
2024/07/17 02:32
2024/07/17 03:39 編集
2024/07/17 05:40 編集
2024/07/17 05:53
2024/07/17 07:26 編集
2024/07/17 07:47 編集
2024/07/17 07:54
2024/07/17 08:16