質問編集履歴

4

不足説明の充実

2023/12/26 05:39

投稿

maltines
maltines

スコア12

test CHANGED
@@ -1 +1 @@
1
- 変数の内一つでも共有していれば同じグループに分類したい。
1
+ そのグループの要素の変数の内一つでも共有していれば同じグループに分類したい。
test CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 実現したいこと
2
2
 
3
3
 
4
- - [ ] 変数の内一つでも共有していれば同じグループに分類したい。
4
+ - [ ] そのグループの変数の内、自分の変数と同じ数字を一つでも共有していれば同じグループに分類したい。
5
5
 
6
6
  ### 前提
7
7
 

3

説明の不足箇所を充実

2023/12/26 05:30

投稿

maltines
maltines

スコア12

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,7 @@
32
32
  ```
33
33
 
34
34
  このデータをグループ化する新たな変数を作りたいです。
35
- 具体的には、第1変数、第2変数、第3変数、どれか一つでもの行と同じだと、同じグループとしたいです。逆に言えば、第1変数、第2変数、第3変数の全てにおいての行と共有しない場合、異なるグループとしたいです。例えば、上記のデータをこの規則に従ってグループ化(第4変数)すると、以下のようなものになります。
35
+ 具体的には、第1変数、第2変数、第3変数、どれか一つでもあるグループの行と同じだと、同じグループとしたいです。つまり、「自分以外のグループの構成員の内誰か一人でも変数のどれかを共有している」という条件です。逆に言えば、第1変数、第2変数、第3変数の全てにおいてグループのどの行と共有しない場合、異なるグループとしたいです。例えば、上記のデータをこの規則に従ってグループ化(第4変数)すると、以下のようなものになります。
36
36
 
37
37
  ```R
38
38
  >print(data)

2

調査したこと・試したことの記入

2023/12/25 13:08

投稿

maltines
maltines

スコア12

test CHANGED
File without changes
test CHANGED
@@ -55,6 +55,45 @@
55
55
 
56
56
  これを実現するコードが無知ゆえに見当が付きません。各変数ではグループ化(tidyverseなどによるもの)は当然できるが、各変数グループの論理和的なグルーピングのコードがどうやっても思いつかないため、大変申し訳ないが知恵をお借りしたいです。
57
57
 
58
+ ### 調査したこと・試したこと
59
+
60
+ 以下のコードを実行しましたが、思った出力にはなりませんでした。
61
+
62
+ ```R
63
+ data <- data.frame(
64
+ V1 = c(1, 1, 2, 3, 3, 4, 4, 4, 4, 5, 5, 6, 7),
65
+ V2 = c(1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 5, 6, 7),
66
+ V3 = c(1, 1, 1, 2, 3, 4, 5, 5, 6, 5, 6, 7, 8)
67
+ )
68
+
69
+ data <- data %>%
70
+ group_by(V1|V2|V3) %>%
71
+ mutate(group_id = group_indices())
72
+
73
+ print(data)
74
+
75
+ > print(data)
76
+ # A tibble: 13 × 5
77
+ # Groups: V1 | V2 | V3 [1]
78
+ V1 V2 V3 `V1 | V2 | V3` group_id
79
+ <dbl> <dbl> <dbl> <lgl> <int>
80
+ 1 1 1 1 TRUE 1
81
+ 2 1 2 1 TRUE 1
82
+ 3 2 2 1 TRUE 1
83
+ 4 3 3 2 TRUE 1
84
+ 5 3 3 3 TRUE 1
85
+ 6 4 4 4 TRUE 1
86
+ 7 4 4 5 TRUE 1
87
+ 8 4 5 5 TRUE 1
88
+ 9 4 5 6 TRUE 1
89
+ 10 5 5 5 TRUE 1
90
+ 11 5 5 6 TRUE 1
91
+ 12 6 6 7 TRUE 1
92
+ 13 7 7 8 TRUE 1
93
+ ```
94
+ 単純に論理和をグルーピングに入れるだけでは理想の出力になりません。(そりゃそうですが。)
95
+ しかし、これ以外に思いつきません。
96
+
58
97
  ### 補足情報(FW/ツールのバージョンなど)
59
98
 
60
99
  Rstudioは3か月前に更新したもの。OSはwindows11。

1

出力結果の誤りを訂正。

2023/12/25 12:00

投稿

maltines
maltines

スコア12

test CHANGED
File without changes
test CHANGED
@@ -40,16 +40,16 @@
40
40
  1 1 1 1 1
41
41
  2 1 2 1 1
42
42
  3 2 2 1 1
43
- 4 3 3 2 1
43
+ 4 3 3 2 2
44
- 5 3 3 3 1
44
+ 5 3 3 3 2
45
- 6 4 4 4 2
45
+ 6 4 4 4 3
46
- 7 4 4 5 2
46
+ 7 4 4 5 3
47
- 8 4 5 5 2
47
+ 8 4 5 5 3
48
- 9 4 5 6 2
48
+ 9 4 5 6 3
49
- 10 5 5 5 2
49
+ 10 5 5 5 3
50
- 11 5 5 6 2
50
+ 11 5 5 6 3
51
- 12 6 6 7 3
51
+ 12 6 6 7 4
52
- 13 7 7 8 4
52
+ 13 7 7 8 5
53
53
  ```
54
54
 
55
55