2017-05-11 149 views
1

說我有10列,其中每個10列表示單獨的時間序列數據幀一個。轉換每一列中數據幀以分離數據幀

我想每個時間序列(或數據幀的各列)存儲在單獨的數據幀。

我已經使用分配嘗試(「COLUMNNAME」,DF [,I]),其中i是從1到列數環路中的可變。這會導致每列的字符向量,而我需要使用數據幀。

任何想法,我怎麼可能會繼續嗎?

回答

0
# Create a test dataframe 
df <- data.frame(c(1:3), c(3:5), c(8:10)) 
colnames(df) <- c("col1","col2","col3") 

#### VERSION 1 #### 
# Creates a new dataframe from each column, but lose the original column names in the new dataframes 
for(i in 1:ncol(df)) 
    {assign(colnames(df)[i], data.frame(df[,i]))} 

#### VERSION 2 #### 
# Creates a new dataframe from each column, maintains the original column names in the new dataframes 
for(i in 1:ncol(df)) 
{temp <- data.frame(df[,i]) 
colnames(temp) <- colnames(df)[i] 
assign(colnames(df)[i], temp) 
rm(temp) 
} 
+0

或者,如果OP是願意放棄'assign'(這是非常普遍的沮喪),有'split.default(DF,seq_along(DF))'或'split.default(DF,名字(df))' – Frank

+1

split.default絕對是一個很好的選擇。只要記住,當你將分割到一個新的對象'X < - split.default(DF,名字(DF))'所產生的dataframes將被存儲在列表中該對象,然後可以通過它們的索引被引用在列表中,即:在使用數據幀'x的索引號[2]'或通過使用數據幀'x的名稱[ 「COL2」]' –

+1

實際上'X [[ 「COL2」]]',是嗎? 'x [「col2」]'將成爲列表的一個子集,而不是它的一個元素。 – Frank