簡體   English   中英

如何通過配對列來對數據框進行子集化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM