2014-12-18 15 views
9

Aynı siparişi takip eden daha büyük bir veri kümem var, benzersiz bir tarih sütunu, veri, benzersiz tarih sütunu, tarih vb. Veri sütununa göre ad, ancak benzersiz tarih sütunu da. Aşağıdaki kod, istediklerimin bir parçası olan adların listesini temel alan sütunlar seçer, ancak alt sütunlu sütundan hemen önce sütunu nasıl alabilirim hakkında herhangi bir fikir var mı?Sütun adlarının listesini temel alan sütunlar oluşturun ve sütunu daha önce getirin

Date1, Fire, Date3, Earth sütunlarını içeren (yalnızca NameList kullanarak) bir DF ile sona ermek için. İşte

benim tekrarlanabilir kodudur:

Cnames <- c("Date1","Fire","Date2","Water","Date3","Earth") 
MAINDF <- data.frame(replicate(6,runif(120,-0.03,0.03))) 
colnames(MAINDF) <- Cnames 

NameList <- c("Fire","Earth") 

NewDF <- MAINDF[,colnames(MAINDF) %in% NameList] 

cevap

6

üretir Nasıl hakkında

İşte
NameList <- c("Fire","Earth") 

idx <- match(NameList, names(MAINDF)) 
idx <- sort(c(idx-1, idx)) 

NewDF <- MAINDF[,idx] 

biz istenen sütun dizini bulmak için match() kullanın ve sonra biz

Önüne sütun kapmak için dizin çıkarma kullanabilirsiniz
6

Kullanım which isimlerinden sütun sayılarını almak için, ve sonra sadece basit aritmetik:

col.num <- which(colnames(MAINDF) %in% NameList) 
NewDF <- MAINDF[,sort(c(col.num, col.num - 1))] 

  Date1   Fire  Date3  Earth 
1 -0.010908003 0.007700453 -0.022778726 -0.016413307 
2 0.022300509 0.021341360 0.014204445 -0.004492150 
3 -0.021544992 0.014187158 -0.015174048 -0.000495121 
4 -0.010600955 -0.006960160 -0.024535954 -0.024210771 
5 -0.004694499 0.007198620 0.005543146 -0.021676692 
6 -0.010623787 0.015977135 -0.027741109 -0.021102651 
... 
İlgili konular