![](/img/trans.png)
[英]how to subset a data frame based on list of multiple match case in columns
[英]How to subset a data frame by pairing its columns
我需要以這樣一種方式提取列,即選擇一個列,然后選擇距離 288 列的下一個列。 例如:
datanew <- data[, c(8, 296, 9, 297, 10, 298, 11, 299, 12, 300 etc)]
我需要這樣做直到 288, 576。
有人可以建議是否有更快的方法來做到這一點?
就像是
first_columns <- 8:288
next_columns <- first_columns+288
comb <- c(rbind(first_columns, next_columns))
這是棘手的部分 - 因為 R 以列優先順序存儲矩陣,創建一個兩行矩陣,然后使用c()
將其折疊為向量將創建一個列號的交錯向量。 (檢查head(comb)
顯示8 296 9 297 10 298 ...
根據要求。)
然后做data[, comb]
。
另一種更明確的方法來做到這一點:
comb <- rep(NA_real_, 2*(288-7)) ## set up vector (could also use numeric())
odds <- seq(1,length(comb), by=2)
evens <- seq(2, length(comb), by=2)
comb[odds] <- 8:288
comb[evens] <- comb[odds] + 288
您可以利用回收並執行以下操作:
datanew <- data[, rep(8:288, each=2) + c(0, 288)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.