※ 引述《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