Вы можете использовать reshape
из базы r
reshape(dat,matrix(2:ncol(dat),5),dir="long")
ID time v1 v2 v3 v4 v5 id
1.1 1 1 adi 20180501 4 US california 1
2.1 2 1 surya 20180502 5 MP Bhopal 2
3.1 3 1 ram 20180503 5 MP Bhopal 3
1.2 1 2 john 20180504 4 AP Vizag 1
2.2 2 2 vamsi 20180505 5 UP Lucknow 2
3.2 3 2 sam 20180503 5 MP Bhopal 3
1.3 1 3 ram 20180503 5 MP Bhopal 1
2.3 2 3 vijay 20180503 5 MP Bhopal 2
3.3 3 3 ram 20180503 5 MP Bhopal 3
или вы можете использовать data.table
library(data.table)
melt(setDT(dat), "ID",data.frame(t(matrix(2:ncol(dat),5))))
ID variable value1 value2 value3 value4 value5
1: 1 1 adi 20180501 4 US california
2: 2 1 surya 20180502 5 MP Bhopal
3: 3 1 ram 20180503 5 MP Bhopal
4: 1 2 john 20180504 4 AP Vizag
5: 2 2 vamsi 20180505 5 UP Lucknow
6: 3 2 sam 20180503 5 MP Bhopal
7: 1 3 ram 20180503 5 MP Bhopal
8: 2 3 vijay 20180503 5 MP Bhopal
9: 3 3 ram 20180503 5 MP Bhopal
, если вам нужно расположить строки, вы сделаете:
melt(setDT(dat),id.vars = "ID",data.frame(t(matrix(2:ncol(dat),5))))[order(ID)][,variable:=NULL][]
ID value1 value2 value3 value4 value5
1: 1 adi 20180501 4 US california
2: 1 john 20180504 4 AP Vizag
3: 1 ram 20180503 5 MP Bhopal
4: 2 surya 20180502 5 MP Bhopal
5: 2 vamsi 20180505 5 UP Lucknow
6: 2 vijay 20180503 5 MP Bhopal
7: 3 ram 20180503 5 MP Bhopal
8: 3 sam 20180503 5 MP Bhopal
9: 3 ram 20180503 5 MP Bhopal