回答編集履歴

3

2024/07/17 07:26

投稿

melian
melian

スコア20283

test CHANGED
@@ -42,3 +42,22 @@
42
42
  # 10 4 d <NA> <NA> <NA> <NA> <NA> <NA> d
43
43
  # 11 4 b <NA> <NA> <NA> <NA> <NA> <NA> b
44
44
  ```
45
+
46
+ ### 追記
47
+
48
+ > EXCELに出力した時にaがあるセルは黄色、bがあるセルは青色、cがあるセルは赤色、dがあるセルは紫色に…
49
+
50
+ `A[row - 1, col - 1]` ではなく `A[row - 1, col]` ではないかと思います。
51
+
52
+ ```r
53
+ for (row in 2:(nrow(A) + 1)) {
54
+ for (col in 2:ncol(A)) {
55
+ cell_value <- A[row - 1, col]
56
+ style <- setColor(cell_value)
57
+ if (!is.null(style)) {
58
+ addStyle(wb, sheet = 1, style = style, rows = row, cols = col, gridExpand = TRUE)
59
+ }
60
+ }
61
+ }
62
+ ```
63
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-07-17/f88fedad-e0da-4ac4-8dbb-841bb57643e4.png)

2

2024/07/17 05:40

投稿

melian
melian

スコア20283

test CHANGED
@@ -1,6 +1,6 @@
1
1
  > 目標としては、セルに2つ表示されるのではなく該当する月に同じ(物)プロダクトがある場合はpatientidを2行にし、一つのセルに一つのプロダクトとしたい
2
2
 
3
- `row_id` 列(`row_number()`)を追加してから `pivot_wider()` を実行します。この様にすることで、`receiptname` + `row_id`(`pivot_wider()` におけるインデックス値)がユニークになるので期待する出力になるかと思います。
3
+ `row_id` 列(`row_number()`)を追加してから `pivot_wider()` を実行します。この様にすることで、`patientid` + `row_id`(`pivot_wider()` におけるインデックス値)がユニークになるので期待する出力になるかと思います。
4
4
  ```r
5
5
  suppressMessages(library(tidyverse))
6
6
 

1

2024/07/17 05:17

投稿

melian
melian

スコア20283

test CHANGED
@@ -1,49 +1,44 @@
1
- > 具体的には、完成形表記にしたいところが、年月日表記のままであり、
1
+ > 目標としては、セルに2つ表示されるのはなく該当する月に同じ(物)プロダクトがある場合はpatientidを2行に、一つのセルに一つのプロダクトとしたい
2
2
 
3
- 月毎の列(`each_month`)を作成して`pivot_wider()` の `name_from` に指定します。最後年月日表記を年月表記に変更していま。(`rename_with(...)`)
3
+ `row_id` 列(`row_number()`)を追加してから `pivot_wider()` を実行します。この様にすることで、`receiptname` + `row_id`(`pivot_wider()` におけるインデックス値)がユニークになるので期待する出力になるかと思います。
4
-
5
4
  ```r
6
5
  suppressMessages(library(tidyverse))
7
- Sys.setlocale("LC_TIME", "C")
8
6
 
9
- selected_data_subset1 <- data.frame(
7
+ A <- data.frame(
10
- patientid = c(23458, 2789, 5341, 2859),
8
+ patientid = c(1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4),
11
- actdate = mdy(c("1/10/19", "4/1/19", "3/1/19", "6/1/19")),
9
+ receiptname = c('a', 'b', 'a', 'c', 'd', 'b', 'd', 'a', 'c', 'd', 'b'),
10
+ actdate = 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',
12
- receiptname = c("A", "B", "C", "C")
11
+ '2020-06-17', '2020-07-19', '2020-07-19'))
13
12
  )
14
13
 
15
- #
16
- selected_data_subset1 <- selected_data_subset1 |>
17
- add_row(
18
- actdate =
19
- seq.Date(
20
- min(selected_data_subset1$actdate),
21
- max(selected_data_subset1$actdate),
22
- by = "1 month"
23
- )
24
- ) |>
14
+ A <- A |>
25
- # summarize with each month
26
- mutate(each_month = floor_date(actdate, "1 month")) |>
15
+ mutate(year_month = format(actdate, "%Y-%m")) |>
27
- distinct(each_month, .keep_all = TRUE) |>
28
16
  select(-actdate) |>
17
+ # add unique id
18
+ mutate(row_id = row_number()) |>
29
19
  pivot_wider(
30
- names_from = each_month,
20
+ names_from = year_month,
31
21
  names_sort = TRUE,
32
22
  values_from = receiptname
33
23
  ) |>
24
+ select(-row_id) |>
34
25
  drop_na(patientid) |>
35
- unite("receiptname", !patientid, remove = FALSE, na.rm = TRUE) |>
26
+ unite("receiptname", !patientid, remove = FALSE, na.rm = TRUE)
36
- # rename date columns
37
- rename_with(~strftime(., "%b-%y"), -c("patientid", "receiptname"))
38
27
 
39
- selected_data_subset1
28
+ A
40
29
 
41
- # # A tibble: 4 × 8
30
+ # # A tibble: 11 × 9
42
- # patientid receiptname `Jan-19` `Feb-19` `Mar-19` `Apr-19` `May-19` `Jun-19`
31
+ # patientid receiptname `2020-01` `2020-02` `2020-03` `2020-04` `2020-05` `2020-06` `2020-07`
43
- # <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
32
+ # <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
33
+ # 1 1 a a <NA> <NA> <NA> <NA> <NA> <NA>
34
+ # 2 1 b b <NA> <NA> <NA> <NA> <NA> <NA>
35
+ # 3 2 a <NA> a <NA> <NA> <NA> <NA> <NA>
36
+ # 4 2 c <NA> <NA> c <NA> <NA> <NA> <NA>
37
+ # 5 2 d <NA> <NA> d <NA> <NA> <NA> <NA>
38
+ # 6 3 b <NA> <NA> <NA> b <NA> <NA> <NA>
39
+ # 7 3 d <NA> <NA> <NA> <NA> d <NA> <NA>
40
+ # 8 3 a <NA> <NA> <NA> <NA> a <NA> <NA>
41
+ # 9 4 c <NA> <NA> <NA> <NA> <NA> c <NA>
44
- # 1 23458 A A <NA> <NA> <NA> <NA> <NA>
42
+ # 10 4 d <NA> <NA> <NA> <NA> <NA> <NA> d
45
- # 2 2789 B <NA> <NA> <NA> B <NA> <NA>
43
+ # 11 4 b <NA> <NA> <NA> <NA> <NA> <NA> b
46
- # 3 5341 C <NA> <NA> C <NA> <NA> <NA>
47
- # 4 2859 C <NA> <NA> <NA> <NA> <NA> C
48
44
  ```
49
-