我有一個15000 obs的數據幀。 45個變量,與下面給出的示例輸入數據框具有相似的結構/模式/類。刪除/子集或基於標題名稱的一部分選擇列
我想要做的是選擇「日期」列+包含「_MIN」作爲標題的一部分,並把它們放入一個新的DF。 &選擇「Date」列+包含「_MIN」的列作爲標題的一部分並將它們放入新的df中。
所以我基本上是尋找一種方法來選擇或基於列標題的一部分名稱的整個列子集。舉例:多列包含一個「_」下劃線,我想刪除或選擇這些列。
INPUT dataframe:
Example <- data.frame(Date=seq(as.Date("1979/1/1"),as.Date("1979/1/5"), by="day"), ca_MIN=1:5, ca_MAX=2:6, cb_MIN=3:7, cb_MAX=4:8)
>Example
Date ca_MIN ca_MAX cb_MIN cb_MAX
1 1979-01-01 1 2 3 4
2 1979-01-02 2 3 4 5
3 1979-01-03 3 4 5 6
4 1979-01-04 4 5 6 7
5 1979-01-05 5 6 7 8
OUTPUT dataframes, selected based on the column names "_MAX", "_MIN":
Example_MIN <- data.frame(Date=seq(as.Date("1979/1/1"),as.Date("1979/1/5"), by="day"), ca_MIN=1:5, cb_MIN=3:7)
Example_MAX <- data.frame(Date=seq(as.Date("1979/1/1"),as.Date("1979/1/5"), by="day"), ca_MAX=2:6, cb_MAX=4:8)
>Example_MIN
Date ca_MIN cb_MIN
1 1979-01-01 1 3
2 1979-01-02 2 4
3 1979-01-03 3 5
4 1979-01-04 4 6
5 1979-01-05 5 7
在它的工作原理與時刻:
Example_MIN <-Example
Example_MAX <-Example
subset(ExampleMIN,select=-c(2,4))
subset(ExampleMAX,select=-c(3,5))
然而,這讓我對大數據集的錯誤(雖然結果對我的作品):
Error in `[.data.table`(x, r, vars, with = FALSE) : j out of bounds
有一個不那麼麻煩的方式來做到這一點?
我寧願它也處理數據集與大量列&列「_MIN」&「_MAX」不排序爲奇數和偶數列號?
我看到帖子說是相關的,但我沒有管理這麼遠來創建工作代碼...
'示例[grepl(「_ MIN」,names(Example))]'和'Example [grepl(「_ MAX」,names(Example))]' –
,並從錯誤信息中看起來像'data.table'。在這種情況下'Example [,grepl(「_ MIN」,names(Example)),with = F]' –
@Ronak Shah。是的,顯然是在我的腳本的某個地方,我的data.frame變成了一個data.table。這就是爲什麼我以前的嘗試沒有奏效。感謝您指出了這一點。我會在下次執行操作時記住這一點:) –