1
說我有10列,其中每個10列表示單獨的時間序列數據幀一個。轉換每一列中數據幀以分離數據幀
我想每個時間序列(或數據幀的各列)存儲在單獨的數據幀。
我已經使用分配嘗試(「COLUMNNAME」,DF [,I]),其中i是從1到列數環路中的可變。這會導致每列的字符向量,而我需要使用數據幀。
任何想法,我怎麼可能會繼續嗎?
說我有10列,其中每個10列表示單獨的時間序列數據幀一個。轉換每一列中數據幀以分離數據幀
我想每個時間序列(或數據幀的各列)存儲在單獨的數據幀。
我已經使用分配嘗試(「COLUMNNAME」,DF [,I]),其中i是從1到列數環路中的可變。這會導致每列的字符向量,而我需要使用數據幀。
任何想法,我怎麼可能會繼續嗎?
# 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)
}
或者,如果OP是願意放棄'assign'(這是非常普遍的沮喪),有'split.default(DF,seq_along(DF))'或'split.default(DF,名字(df))' – Frank
split.default絕對是一個很好的選擇。只要記住,當你將分割到一個新的對象'X < - split.default(DF,名字(DF))'所產生的dataframes將被存儲在列表中該對象,然後可以通過它們的索引被引用在列表中,即:在使用數據幀'x的索引號[2]'或通過使用數據幀'x的名稱[ 「COL2」]' –
實際上'X [[ 「COL2」]]',是嗎? 'x [「col2」]'將成爲列表的一個子集,而不是它的一個元素。 – Frank