[英]identify repeated subjects in r
我有以下數據:
subject <- c("A-B10", "A101", "A-B10", "C101", "A101", "C01", "A101", "AB101", "A.B10")
idn <- c(101, 102, 104, 100, 98, 102, 90, 102, 78)
sn <- 1:9
mydata <- data.frame (sn, subject, idn)
sn subject idn
1 1 A-B10 101
2 2 A101 102
3 3 A-B10 104
4 4 C101 100
5 5 A101 98
6 6 C01 102
7 7 A101 90
8 8 AB101 102
9 9 A.B10 78
我想在大型數據集中識別重復的主題。 預期結果如下:
repeat [1]
sn subject idn
1 1 A-B10 101
3 3 A-B10 104
repeat [2]
sn subject idn
2 2 A101 102
5 5 A101 98
7 7 A101 90
編輯:
dup <- mydata$subject[duplicated(mydata$subject)]
mydata[mydata$subject %in% dup, ]
sn subject idn
1 1 A-B10 101
2 2 A101 102
3 3 A-B10 104
5 5 A101 98
7 7 A101 90
lapply(dup, function(x) mydata[mydata$subject == x,])
[[1]]
sn subject idn
1 1 A-B10 101
3 3 A-B10 104
[[2]]
sn subject idn
2 2 A101 102
5 5 A101 98
7 7 A101 90
[[3]]
sn subject idn
2 2 A101 102
5 5 A101 98
7 7 A101 90
例如 :
> ## dup <- mydata$subject[duplicated(mydata$subject)]
> dup <- unique(mydata$subject[duplicated(mydata$subject)]) ## sorry, edited
> mydata[mydata$subject %in% dup, ]
sn subject idn
1 1 A-B10 101
2 2 A101 102
3 3 A-B10 104
5 5 A101 98
> lapply(dup, function(x) mydata[mydata$subject == x,])
[[1]]
sn subject idn
1 1 A-B10 101
3 3 A-B10 104
[[2]]
sn subject idn
2 2 A101 102
5 5 A101 98
這是一種不同的方法。 首先按主題拆分所有數據,然后僅保留具有多個條目的數據。
sets <- split(mydata, mydata$subject)
Filter(function(x) {nrow(x)>1}, sets)
如果您不需要中間體,則可以內聯。
Filter(function(x) {nrow(x)>1}, split(mydata, mydata$subject))
這使
> Filter(function(x) {nrow(x)>1}, split(mydata, mydata$subject))
$`A-B10`
sn subject idn
1 1 A-B10 101
3 3 A-B10 104
$A101
sn subject idn
2 2 A101 102
5 5 A101 98
7 7 A101 90
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.