簡體   English   中英

按列拆分數據框

[英]Splitting a dataframe by columns

我想按列拆分數據框。 聽起來微不足道,但到目前為止我還沒有真正成功。 這是我想出的:

SG <- data.frame(num = 1:26, let = letters, LET = LETTERS)
SG <- lapply(SG, function(x) split(x, colnames(SG)))
str(SG)

List of 3
 $ num:List of 3
 $ let:List of 3
 $ LET:List of 3

我已成功將數據框轉換為列表列表。 但是我想要一個數據幀列表,保留SG信息,並且每個數據幀都包含一列初始數據幀。 那可能嗎?

謝謝!

這應該可行,保留行名。 它返回數據幀列表:

SG <- lapply(SG, data.frame)

str(SG)
List of 3
 $ num:'data.frame':    26 obs. of  1 variable:
  ..$ X..i..: int [1:26] 1 2 3 4 5 6 7 8 9 10 ...
 $ let:'data.frame':    26 obs. of  1 variable:
  ..$ X..i..: Factor w/ 26 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ LET:'data.frame':    26 obs. of  1 variable:
  ..$ X..i..: Factor w/ 26 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10 ...

您可以使用

lapply(colnames(SG), function(x) SG[,x,drop=F])

返回具有結構的對象

List of 3
 $ :'data.frame':   26 obs. of  1 variable:
  ..$ num: int [1:26] 1 2 3 4 5 6 7 8 9 10 ...
 $ :'data.frame':   26 obs. of  1 variable:
  ..$ let: Factor w/ 26 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ :'data.frame':   26 obs. of  1 variable:
  ..$ LET: Factor w/ 26 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10 ...

在這種情況下,我們只是在設置子集。 當您要將行而不是列分成不同的組時,data.frames的split()更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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