2016-05-26 6 views
1

私は、行の名前として月を、列の名前として月を、そして各要素にデータを含む大きな行列を持っています。以下のデータをテストしてください:Rで、名前付きの行ヘッダーと列ヘッダーを含むrle(Run Length Encoding)の結果を使用

testmatrix<-matrix(c(1,0,0,0,10,5,5,5,5,5,2,2,0,0,0,0,0,1,1,1),nrow=4,ncol=5,byrow=TRUE) 
colnames(testmatrix)<-c("Jan","Feb","Mar","Apr","May") 
rownames(testmatrix)<-c("Company1","Company2","Company3","Company4") 
progression<-apply(testmatrix,1,rle) 
progression 

プログレッションオブジェクトは、マトリックスの各行に適用されるrle関数の出力です。結果はクラス 'rle'の両方である2つの要素のリストです。私がしたい:

  1. が理解方法Company1の行列(R)に出力4x3の(列によって行)に次のように:
したがって

enter image description here

私は理解するのに苦労していどのprogression

    (好ましくは上記(1)でフォーマット(さらなる分析のためにExcelにエクスポート
  1. progressionを込みによって提供される出力に対処します列ヘッダーと行ヘッダーを検索します(リスト出力では、attr(*、 "names")と呼ばれます)。

ご協力いただきありがとうございます。

+0

TLMにお問い合わせいただきありがとうございます。 – ellimist

答えて

0

これは特にエレガントではないが、これは仕事をしていません:

format_rle <- function(rle, rn){ 
    l <- list(rle$lengths, 
    names(rle$lengths), 
    rle$values, 
    names(rle$values)) 
    m <- as.matrix(do.call(rbind, l)) 
    colnames(m) <- NULL 
    rownames(m) <- rep(rn, nrow(m)) 
    m 
} 

は、アイデアを得るためにformat_rle(progression[[1]], "foo")を試してみてください:

[,1] [,2] [,3] 
foo "1" "3" "1" 
foo "Feb" "May" "" 
foo "1" "0" "10" 
foo "Jan" "Apr" "May" 

その後、我々は、進行中のすべての要素に、この機能を適用し、結果を保存します進行中の名前に従って命名された個々のcsvファイルにコピーします。作業ディレクトリにa bunch of .csv個のファイルがあるはずです(印刷するにはgetwd())。

for (i in seq_along(progression)) 
    write.csv(format_rle(progression[[i]], names(progression)[i]), 
      file=paste0(names(progression[i]), ".csv")) 

これは必要なものですか?

+0

Vincent、Bonhommeの代わりにMon hommeと呼ぶべきです。優れた答え。私は実際には私は2000年以上の企業を持っているので、2000年のCSVファイルを作成することは実用的ではありません、それのすべての完全な優れた出力が欲しかったので、私の質問にもっと具体的であったはずです。 1つのファイル内のすべてを取得するための調整済みコードは次のとおりです。 'for(i seq_along(progression)) write.table(format_rle(progression [[i]]、names(progression)[i])、 file = "append .csv "、append = T、sep ="、 "、col.names = F)'となります。それは他の人のためのものです。もし私がそれを正しく表現していれば、あなたはそれをも提供したでしょう。再びありがとう – ellimist

+0

あなたを歓迎します;-) –

関連する問題