4

大きなdata.frame(144列)があります。それぞれ3列のグループ(サブファイルまたはサブdata.frame)に分割し、サブdata.framesを別々のファイルに保存したいと思います。つまり、file1 には 1 から 3 までの列が含まれ、file2 には 6 から 9 までの列が含まれます。

何か考えはありますか?

ほんの一例:

  Hb1  Int1  Value1   Hb2  Int2  Value2         
   A     c     0.3     SW   n     0.34        
   V     sd    0.45    FG   b     0.345    
   N     wer   0.76    GH   m     0.67

したがって、ファイル「output1」には次が含まれます。

  Hb1  Int1   Value1   
   A     c     0.3
   V     sd    0.45    
   N     wer   0.76

ファイル「output2」には次が含まれます。

 Hb2    Int2  Value2     
 SW       n    0.34    
 FG       b    0.345    
 GH       m    0.67

等々。

次のような Index 値を含む転置された data.frame に列を追加しようとしました。

インデックス = 担当者 (1: 48、各 = 3)

次に、インデックス列に従って大きな data.frame を分割しようとしましたが、続行できません。

4

2 に答える 2

4

多分これはあなたにとって便利です:

# A simple function (EDIT: FIXED) 
Split_and_save_DF <- function(DF, split){
  # Spliting your data frame by columns to get several data.frames
  DFlist <-lapply(seq(1, ncol(DF), split), function(x, i){x[, i:(i+(split-1))]}, x=DF)
  # Saving each data.frames as .txt file
  invisible(sapply(1:length(DFlist), function(x, i) write.table(x[[i]], file=paste0('DF', i, '.txt')), x=DFlist))
}

DF <- data.frame(matrix(rnorm(144*12, 100, 30), ncol=144))
dim(DF) # a dataframe with 12 rows and 144 cols
Split_and_save_DF(DF=DF, split=3) # will produce 48 DF's

DFdata.frame はどこにあり、データsplitフレームを分割する列の数です。

それはいい答えではありませんが、あなたが望むことをします。

この関数は DF を分割し、現在の作業ディレクトリに新しい各 DF を次のような名前で保存DF1.txtDF2.txtますDF3.txt

read.table("DF1.txt", header=TRUE) # and so on

出力を確認するには:

dim(read.table("DF1.txt", header=TRUE)) # checking dims of new DF's
[1] 12  3
于 2013-02-27T16:44:02.810 に答える
3

に近かったIndex = rep(1: 48, each = 3)ので、それを使用して列名を分割できます。

lapply(split(colnames(DF),
             rep(1:48,each=3)),
       function(x)DF[,x])

@Jilberの例でテストします。

colnames(DF) <-  paste(c('Hb','Int',  'Value'),rep(1:48,each=3),sep='')

> ll <- lapply(split(colnames(DF),
+              rep(1:48,each=3)),
+        function(x)DF[,x])
> head(ll)
$`1`
         Hb1      Int1    Value1
1  155.56103 114.70061  50.15758
2  100.91212 108.93485 138.43324
3   65.02612  97.95829  60.55026
4  102.85399  99.80714  74.53144
5  152.52558 100.28795 109.27979
6  110.84282 122.67727 100.60916
7  100.06572  92.96498 118.99915
8  104.69424  91.46041  38.57983
9   74.59960 119.89719 158.41313
10 100.89299  85.79222 122.57668
11  92.87294  84.40889  95.39005
12  81.20039 127.29311  92.19261

$`2`
         Hb2      Int2    Value2
1  101.27385  96.21813  21.83450
2  124.26445 117.29466  53.67718
3  144.58042 111.06022  91.92567
4  120.74942  98.63582 123.98479
5   95.74860  79.96633 149.62814
6   74.78898  68.25731 122.72720
7  132.12760  97.76982  56.66394
8   47.18706 118.68346 113.63118
9  115.27
于 2013-02-27T17:09:08.937 に答える