2016-02-26 58 views
1

有幾個帖子與這個問題有關,但沒有人可以幫助我解決它。 例如 How to split a data frame? How to split a data frame into multiple data frames based on columns如何基於手動編號拆分數據框?

我想是分裂基於不同的列號的數據,對於實施例1,那麼我必須有儘可能多的列的數據幀具有。 2,I必須有一半的數據幀的數據的(如果它是偶數)

一個例子的數據低於

fredTable <- structure(list(Symbol = structure(c(3L, 1L, 4L, 2L, 5L), .Label = c("CASACBM027SBOG", 
"FRPACBW027SBOG", "TLAACBM027SBOG", "TOTBKCR", "USNIM"), class = "factor"), 
    Name = structure(1:5, .Label = c("bankAssets", "bankCash", 
    "bankCredWk", "bankFFRRPWk", "bankIntMargQtr"), class = "factor"), 
    Category = structure(c(1L, 1L, 1L, 1L, 1L), .Label = "Banks", class = "factor"), 
    Country = structure(c(1L, 1L, 1L, 1L, 1L), .Label = "USA", class = "factor"), 
    Lead = structure(c(1L, 1L, 3L, 3L, 2L), .Label = c("Monthly", 
    "Quarterly", "Weekly"), class = "factor"), Freq = structure(c(2L, 
    1L, 3L, 3L, 4L), .Label = c("1947-01-01", "1973-01-01", "1973-01-03", 
    "1984-01-01"), class = "factor"), Start = structure(c(1L, 
    1L, 1L, 1L, 1L), .Label = "Current", class = "factor"), End = c(TRUE, 
    TRUE, TRUE, TRUE, FALSE), SeasAdj = c(FALSE, FALSE, FALSE, 
    FALSE, TRUE), Percent = structure(c(1L, 1L, 1L, 1L, 1L), .Label = "Fed", class = "factor"), 
    Source = structure(c(1L, 1L, 1L, 1L, 1L), .Label = "Res", class = "factor"), 
    Series = structure(c(1L, 1L, 1L, 1L, 2L), .Label = c("Level", 
    "Ratio"), class = "factor")), .Names = c("Symbol", "Name", 
"Category", "Country", "Lead", "Freq", "Start", "End", "SeasAdj", 
"Percent", "Source", "Series"), row.names = c("1", "2", "3", 
"4", "5"), class = "data.frame") 

我想將它拆分至12個的數據幀並將它們命名爲情況1至12 。

所以我的第一數據幀是情形1

case_1 
TLAACBM027SBOG 
CASACBM027SBOG 
TOTBKCR 
FRPACBW027SBOG 
USNIM 

第二數據幀是殼體2

case_2 
bankAssets 
bankCash 
bankCredWk 
bankFFRRPWk 
bankIntMargQtr 

在情況下,我的數量設置爲2,我應該具有的名稱作爲cas_1,case_2 6列(對2),直到case_12

我知道分割功能用於分割數據,但我無法弄清楚如何做到這一點

,因爲我不喜歡

第一種情況
split(fredTable, 1:ncol(fredTable)) 

回答

1

我們可以使用

lst <- setNames(lapply(seq_along(fredTable), 
     function(i) fredTable[i]), 
     paste('case', seq_along(fredTable), sep="_")) 

list2env(lst, envir=.GlobalEnv) 
+0

謝謝,請你填寫你的答案。這打印出結果,我想讓他們在具有特定名稱的工作空間中,例如上面提到的,例如對於每個列,情況1至12 –

+0

@koskeshkiramtodahanet我們可以使用'setNames'來完成此操作。請檢查更新 – akrun

+0

我檢查了謝謝,它不是給我12分離的數據框架,但只有一個,也許我不能正確傳達我的問題。我想要有與數據框一樣多的數據框,具有保存在「環境」中的特定名稱的數據框,所以當我調用case_1時,我只能看到該列 –