同じ順序、一意の日付列、データ、一意の日付列、日付などに従う大きなデータセットがあります。データ列だけでなく、一意の日付列もサブセット化しようとしています。以下のコードは、名前のリストに基づいて列を選択します。これは、私が欲しいものの一部ですが、サブセット化された列の直前にも列を取得する方法についてのアイデアはありますか?
DF Date1、Fire、Date3、Earth列を含む(NameListのみを使用)で終わることを目指しています。
これが私の再現可能なコードです:
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]
いかがですか
_NameList <- c("Fire","Earth")
idx <- match(NameList, names(MAINDF))
idx <- sort(c(idx-1, idx))
NewDF <- MAINDF[,idx]
_
ここでmatch()
を使用して目的の列のインデックスを見つけ、次にインデックス減算を使用してその前の列を取得できます
which
を使用して、名前から列番号を取得します。これは、単純な計算です。
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
...