0

dat以下のように、という名前のデータを含むテーブルがあります。

               Alison.Wong Bruno.Dumon Edward.J..Yoon Eugene.Koontz Jakob.Homan
Alison Wong              0           0              0             1           1
Bruno Dumon              0           0              0             0           1
Edward J. Yoon           0           1              0             0           0
Eugene Koontz            0           0              0             0           1
Jakob Homan              1           0              1             0           0

dput(ヘッド(dat)

structure(list(Alison.Wong = c(0L, 0L, 0L, 0L, 1L), Bruno.Dumon = c(0L, 
0L, 1L, 0L, 0L), Edward.J..Yoon = c(0L, 0L, 0L, 0L, 1L), Eugene.Koontz = c(1L, 
0L, 0L, 0L, 0L), Jakob.Homan = c(1L, 1L, 0L, 1L, 0L)), .Names = c("Alison.Wong", 
"Bruno.Dumon", "Edward.J..Yoon", "Eugene.Koontz", "Jakob.Homan"
), row.names = c("Alison Wong", "Bruno Dumon", "Edward J. Yoon", 
"Eugene Koontz", "Jakob Homan"), class = "data.frame")

上記のテーブル (データを含む) を他の .csv テンプレートと組み合わせて、テンプレート内の列の順序を保持し、入力ファイル ( dat) からのデータを保持して、別の名前で保存するにはどうすればよいですか。

サンプル テンプレート ファイル:

                Adrian.Cole Alison.Wong Andrei.Savu Bruno.Dumon Edward.J..Yoon
Adrian Cole               0           0           0           0              0
Alison Wong               0           0           0           0              0
Andrei Savu               0           0           0           0              0
Bruno Dumon               0           0           0           0              0
Edward J. Yoon            0           0           0           0              0
Eugene Koontz             0           0           0           0              0
Jakob Homan               0           0           0           0              0
Kelvin Kakugawa           0           0           0           0              0
                Eugene.Koontz Jakob.Homan Kelvin.Kakugawa
Adrian Cole                 0           0               0
Alison Wong                 0           0               0
Andrei Savu                 0           0               0
Bruno Dumon                 0           0               0
Edward J. Yoon              0           0               0
Eugene Koontz               0           0               0
Jakob Homan                 0           0               0
Kelvin Kakugawa             0           0               0

dput(ヘッド(テンプレート)):

structure(list(Adrian.Cole = c(0L, 0L, 0L, 0L, 0L, 0L), Alison.Wong = c(0L, 
0L, 0L, 0L, 0L, 0L), Andrei.Savu = c(0L, 0L, 0L, 0L, 0L, 0L), 
    Bruno.Dumon = c(0L, 0L, 0L, 0L, 0L, 0L), Edward.J..Yoon = c(0L, 
    0L, 0L, 0L, 0L, 0L), Eugene.Koontz = c(0L, 0L, 0L, 0L, 0L, 
    0L), Jakob.Homan = c(0L, 0L, 0L, 0L, 0L, 0L), Kelvin.Kakugawa = c(0L, 
    0L, 0L, 0L, 0L, 0L)), .Names = c("Adrian.Cole", "Alison.Wong", 
"Andrei.Savu", "Bruno.Dumon", "Edward.J..Yoon", "Eugene.Koontz", 
"Jakob.Homan", "Kelvin.Kakugawa"), row.names = c("Adrian Cole", 
"Alison Wong", "Andrei Savu", "Bruno Dumon", "Edward J. Yoon", 
"Eugene Koontz"), class = "data.frame")

この例の出力例:

                Adrian.Cole Alison.Wong Andrei.Savu Bruno.Dumon Edward.J..Yoon
Adrian Cole               0           0           0           0              0
Alison Wong               0           0           0           0              0
Andrei Savu               0           0           0           0              0
Bruno Dumon               0           0           0           0              0
Edward J. Yoon            0           0           0           1              0
Eugene Koontz             0           0           0           0              0
Jakob Homan               0           1           0           0              1
Kelvin Kakugawa           0           0           0           0              0
                Eugene.Koontz Jakob.Homan Kelvin.Kakugawa
Adrian Cole                 0           0               0
Alison Wong                 1           1               0
Andrei Savu                 0           0               0
Bruno Dumon                 0           1               0
Edward J. Yoon              0           0               0
Eugene Koontz               0           1               0
Jakob Homan                 0           0               0
Kelvin Kakugawa             0           0               0

次のスクリプトを使用しようとしましたが、機能しません。

template<- read.table("CR_template.csv", header=T, sep=",", row.names=1)
    template[match(rownames(cr), rownames(template)) , names(cr)] <- cr[ , names(cr)]
    result <- merge(cr, template)
    write.csv(result, paste("CR_FILES_", a.files[i], sep=""))
4

1 に答える 1

2

あなたが提供した例では、信じられないほど簡単です:

template[ , names(dat)] <- dat[ , names(dat)]

ただし、データとして投稿したものは、「dat」と「template」の両方について報告している (正方形) 寸法と一致しません。したがって、5 x 5 などのはるかに小さい例とdat、8 x 8 などの「テンプレート」の少し大きい例を投稿し、正しい答えがあるべきだと思うものを投稿することをお勧めします。

列と行の両方のインターリーブが必要な場合は、これらの行に沿った何かが成功する可能性がありますが、現時点ではテストされていないと考えています:

template[match(rownames(dat), rownames(template)) , names(dat)] <- dat[ , names(dat)]

編集されたバージョンの場合、これは機能します:

datrows <- match(rownames(template), rownames(dat) )
transfer <- dat[ datrows[!is.na(datrows)], ]
template[rownames(transfer) , colnames(transfer) ] <- transfer

> template
               Adrian.Cole Alison.Wong Andrei.Savu Bruno.Dumon Edward.J..Yoon Eugene.Koontz Jakob.Homan
Adrian Cole              0           0           0           0              0             0           0
Alison Wong              0           0           0           0              0             1           1
Andrei Savu              0           0           0           0              0             0           0
Bruno Dumon              0           0           0           0              0             0           1
Edward J. Yoon           0           0           0           1              0             0           0
Eugene Koontz            0           0           0           0              0             0           1
               Kelvin.Kakugawa
Adrian Cole                  0
Alison Wong                  0
Andrei Savu                  0
Bruno Dumon                  0
Edward J. Yoon               0
Eugene Koontz                0
于 2012-09-26T02:13:48.150 に答える