作者celestialgod (天)
看板R_Language
标题Re: [问题] 选取重覆的资料
时间Thu Apr 14 10:36:26 2016
※ 引述《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
--
R资料整理套件系列文:
magrittr #1LhSWhpH (R_Language) http://tinyurl.com/1LhSWhpH
data.table #1LhW7Tvj (R_Language) http://tinyurl.com/1LhW7Tvj
dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/1LhpJCfB
dplyr(下) #1Lhw8b-s (R_Language)
tidyr #1Liqls1R (R_Language) http://tinyurl.com/1Liqls1R
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.109.74.87
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1460601393.A.67B.html
※ 编辑: celestialgod (140.109.74.87), 04/14/2016 10:37:37
1F:推 criky: 谢谢~ 04/14 10:38