2014-05-12 100 views
0

我的數據:索引/聯行的唯一標識符

id<-c(1,1,1,1,1,1,1,2,2,2) 
start<-c(0,1,3,5,7,8,10,0,0,1) 
end<-c(1,3,5,7,8,9,12,0,1,4) 
mydata<-data.frame(id,start,end) 

問:

我會用什麼代碼,表明行1-7鏈接到獨特id(1)和行8 10鏈接到id(2)?輸出應如下所示:

Indexes[1:2] 
$ '1' 
1 2 3 4 5 6 7 
$ '2' 
8 9 10` 

嘗試:

我環顧四周的StackOverflow,但真的沒有看到這個正在做。我曾嘗試

split(mydata,mydata$id) 

我知道,如果我說:

which(mydata$id==1) 

它會告訴我行1-7。但不知道如何使用這個來獲得上面的輸出。

但這當然不起作用。我真的想過,但不能拿出一些體面的代碼作爲第一次嘗試,你將不得不原諒我。

親切的問候 d

回答

0

你是幾乎沒有。 split也可用於rownames。由於它們將是字符值,因此您將它們強制轉換爲數字as.numeric

> Indexes <- split(as.numeric(rownames(mydata)), mydata$id) 
> Indexes[1:2] ## or just 'Indexes' for your sample data 
## $`1` 
## [1] 1 2 3 4 5 6 7 

## $`2` 
## [1] 8 9 10 
+0

謝謝理查德:-) – user3497385