※ 引述《criky (立业成家)》之铭言:
: [问题类型]:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
: [软件熟悉度]:
: 新手(没写过程式,R 是我的第一次)
: [问题叙述]:
: 有5年的报名资料,资料字段如年度,姓名,身份证ID,科系
: 考生可能会隔年重考(不同年度)
: 也可能会同一年重复报考不同科系
: 我想要找出同一年重复报考不同科系的资料,
: 要怎么做呢?谢谢~
: example:
: 学年度 身分证字号 学生姓名 报考科系
: 1 100 A121297328 Andy 中文系
: 2 100 A121297328 Andy 历史系
: 3 100 A121297329 Jo 中文系
: 4 100 A121297330 Ann 历史系
: 5 100 A121297331 Jack 哲学系
: 6 101 A121297332 Julie 中文系
: 7 101 A121297333 Rose 中文系
: 8 101 A121297334 Tim 历史系
: 9 101 A121297334 Tim 哲学系
: 10 101 A121297335 Renee 哲学系
: 11 101 A121297336 Joyce 历史系
: 12 101 A121297328 Andy 中文系
: 我执行
: sample.1<-which(duplicated(subset(sample,select=c("学年度","身分证字号"))))
: 会有Warning message:
: In grepl("\n", lines, fixed = TRUE) :
: input string 1 is invalid in this locale
: sample.1
: [1] 2,9
: 我想要的结果应该是[1] 1,2,8,9
: 要怎么做呢?
: [环境叙述]:
: [关键字]:
: 重复
library(data.table)
DT <- fread('
学年度 身分证字号 学生姓名 报考科系
100 A121297328 Andy 中文系
100 A121297328 Andy 历史系
100 A121297328 Andy 外文系
100 A121297329 Jo 中文系
100 A121297330 Ann 历史系
100 A121297331 Jack 哲学系
101 A121297332 Julie 中文系
101 A121297333 Rose 中文系
101 A121297334 Tim 历史系
101 A121297334 Tim 哲学系
101 A121297335 Renee 哲学系
101 A121297336 Joyce 历史系
101 A121297328 Andy 中文系')
condition1 <- duplicated(DT, fromLast = TRUE,
by = c("学年度", "身分证字号"))
condition2 <- duplicated(DT, fromLast = FALSE,
by = c("学年度", "身分证字号"))
which(condition1 | condition2)
# [1] 1 2 3 9 10
PS: 这里的duplicated是用于data.table的function