找出哪种形式共享问题
Find out which form shares questions
我有这样的数据集。
NA. CODE ASSESSMENT_FORM_VERSION COLLEGE_CODE TOTAL_ITEMS SHARED_ITEMS
1 4020.1.2-01.8x.A.V1 AAO1.4.A IT 45 8
2 4020.1.3-02.1x.A.V1 AAO1.4.A IT 45 8
3 4020.1.1-06.1x.A.V1 AAO1.4.A IT 45 8
4 4020.1.3-02.2x.A.V1 AAO1.4.A IT 45 8
5 4020.1.3-04.2x.A.V1 AAO1.4.A IT 45 8
6 4020.1.2-06.5x.A.V1 AAO1.4.A IT 45 8
7 4020.1.5-07.1x.A.V1 AAO1.4.A IT 45 8
8 4020.1.1-04.5x.A.V1 AAO1.4.A IT 45 8
9 4020.1.2-01.8x.A.V1 AAO1.4.B IT 49 8
10 4020.1.3-02.1x.A.V1 AAO1.4.B IT 49 8
11 4020.1.1-06.1x.A.V1 AAO1.4.B IT 49 8
12 4020.1.3-02.2x.A.V1 AAO1.4.B IT 49 8
13 4020.1.3-04.2x.A.V1 AAO1.4.B IT 49 8
我想做的是找出其他表单与每个表单共享哪些问题。
例如 ASSESSMENT_FORM_VERSION AA01.4.A 与 AAO1.4.B 分享了一些问题。我想看到每一种形式。我还想知道一个表格与另一个表格共享多少个问题。从上面的例子中 AAO1.4.A 与 AAO1.4.B 分享了 5 个问题。所以我想要
NA ASSESSMENT_FORM_VERSION SHARED Number of Shared codes
1 AAO1.4.A AAO1.4.B 5
您需要自连接您的数据集并将其过滤为左侧表单名称少于右侧表单名称的情况(例如)。
这是一个使用 data.table
的解决方案:
library(data.table)
dt <- read.table(text =
"row CODE ASSESSMENT_FORM_VERSION COLLEGE_CODE TOTAL_ITEMS SHARED_ITEMS
1 1 4020.1.2-01.8x.A.V1 AAO1.4.A IT 45 8
2 2 4020.1.3-02.1x.A.V1 AAO1.4.A IT 45 8
3 3 4020.1.1-06.1x.A.V1 AAO1.4.A IT 45 8
4 4 4020.1.3-02.2x.A.V1 AAO1.4.A IT 45 8
5 5 4020.1.3-04.2x.A.V1 AAO1.4.A IT 45 8
6 6 4020.1.2-06.5x.A.V1 AAO1.4.A IT 45 8
7 7 4020.1.5-07.1x.A.V1 AAO1.4.A IT 45 8
8 8 4020.1.1-04.5x.A.V1 AAO1.4.A IT 45 8
9 9 4020.1.2-01.8x.A.V1 AAO1.4.B IT 49 8
10 10 4020.1.3-02.1x.A.V1 AAO1.4.B IT 49 8
11 11 4020.1.1-06.1x.A.V1 AAO1.4.B IT 49 8
12 12 4020.1.3-02.2x.A.V1 AAO1.4.B IT 49 8
13 13 4020.1.3-04.2x.A.V1 AAO1.4.B IT 49 8
", stringsAsFactors = F)
questions <- data.table(dt)
question.matches <- merge(questions, questions, by = "CODE")
question.matches <- question.matches[ASSESSMENT_FORM_VERSION.x < ASSESSMENT_FORM_VERSION.y]
question.matches[, .(matches = .N), .(ASSESSMENT_FORM_VERSION.x, ASSESSMENT_FORM_VERSION.y)]
# ASSESSMENT_FORM_VERSION.x ASSESSMENT_FORM_VERSION.y matches
# 1: AAO1.4.A AAO1.4.B 5
我有这样的数据集。
NA. CODE ASSESSMENT_FORM_VERSION COLLEGE_CODE TOTAL_ITEMS SHARED_ITEMS
1 4020.1.2-01.8x.A.V1 AAO1.4.A IT 45 8
2 4020.1.3-02.1x.A.V1 AAO1.4.A IT 45 8
3 4020.1.1-06.1x.A.V1 AAO1.4.A IT 45 8
4 4020.1.3-02.2x.A.V1 AAO1.4.A IT 45 8
5 4020.1.3-04.2x.A.V1 AAO1.4.A IT 45 8
6 4020.1.2-06.5x.A.V1 AAO1.4.A IT 45 8
7 4020.1.5-07.1x.A.V1 AAO1.4.A IT 45 8
8 4020.1.1-04.5x.A.V1 AAO1.4.A IT 45 8
9 4020.1.2-01.8x.A.V1 AAO1.4.B IT 49 8
10 4020.1.3-02.1x.A.V1 AAO1.4.B IT 49 8
11 4020.1.1-06.1x.A.V1 AAO1.4.B IT 49 8
12 4020.1.3-02.2x.A.V1 AAO1.4.B IT 49 8
13 4020.1.3-04.2x.A.V1 AAO1.4.B IT 49 8
我想做的是找出其他表单与每个表单共享哪些问题。 例如 ASSESSMENT_FORM_VERSION AA01.4.A 与 AAO1.4.B 分享了一些问题。我想看到每一种形式。我还想知道一个表格与另一个表格共享多少个问题。从上面的例子中 AAO1.4.A 与 AAO1.4.B 分享了 5 个问题。所以我想要
NA ASSESSMENT_FORM_VERSION SHARED Number of Shared codes
1 AAO1.4.A AAO1.4.B 5
您需要自连接您的数据集并将其过滤为左侧表单名称少于右侧表单名称的情况(例如)。
这是一个使用 data.table
的解决方案:
library(data.table)
dt <- read.table(text =
"row CODE ASSESSMENT_FORM_VERSION COLLEGE_CODE TOTAL_ITEMS SHARED_ITEMS
1 1 4020.1.2-01.8x.A.V1 AAO1.4.A IT 45 8
2 2 4020.1.3-02.1x.A.V1 AAO1.4.A IT 45 8
3 3 4020.1.1-06.1x.A.V1 AAO1.4.A IT 45 8
4 4 4020.1.3-02.2x.A.V1 AAO1.4.A IT 45 8
5 5 4020.1.3-04.2x.A.V1 AAO1.4.A IT 45 8
6 6 4020.1.2-06.5x.A.V1 AAO1.4.A IT 45 8
7 7 4020.1.5-07.1x.A.V1 AAO1.4.A IT 45 8
8 8 4020.1.1-04.5x.A.V1 AAO1.4.A IT 45 8
9 9 4020.1.2-01.8x.A.V1 AAO1.4.B IT 49 8
10 10 4020.1.3-02.1x.A.V1 AAO1.4.B IT 49 8
11 11 4020.1.1-06.1x.A.V1 AAO1.4.B IT 49 8
12 12 4020.1.3-02.2x.A.V1 AAO1.4.B IT 49 8
13 13 4020.1.3-04.2x.A.V1 AAO1.4.B IT 49 8
", stringsAsFactors = F)
questions <- data.table(dt)
question.matches <- merge(questions, questions, by = "CODE")
question.matches <- question.matches[ASSESSMENT_FORM_VERSION.x < ASSESSMENT_FORM_VERSION.y]
question.matches[, .(matches = .N), .(ASSESSMENT_FORM_VERSION.x, ASSESSMENT_FORM_VERSION.y)]
# ASSESSMENT_FORM_VERSION.x ASSESSMENT_FORM_VERSION.y matches
# 1: AAO1.4.A AAO1.4.B 5