2011-02-03 5 views
1

3つのデータテーブルから約70人の人物に関するデータをインポートし、それらをRの1つのデータフレームにマージしました。 date.birth、number.surgeries.lifetime、およびnumber.surgeries.12monthsになります。 「コメント」などの他のフィールドには値が含まれていないか、1つの文または複数の文が含まれることがあります。短いワイドデータフレームを長いナレーション形式のフリーテキストレポートに変換する

人間の被験者の中には、何かが欠落しているか、正しくないものがあることを意味する異常を持っている人もいます。手動で調べる必要があります。データフレームをデータフレームとして開いたり、fix()のテーブルとして開いたりすると、読みにくくなります。私は左から右にスクロールする必要がありますし、ちょうど1つのコメントを読むにはばかげた量でいくつかの列を拡張する必要があります。

私が探索する必要のある5人の患者をサブセット化できれば、データを自由に流れるテキストとして報告するほうがずっと良いでしょう。私はcsvにエクスポートすることでそれを行うことができると思ったが、どのフィールドが何であるかを知ることは難しい。例えば、2001年1月5日、12日、4日は、ロサンゼルスに住んでいる間にテストを行った。それは簡単でした。何百ものフィールドがあり、多くは数字、多くは日付、いくつかの異なるコメントフィールドがあればどうなるか想像してください。
date.birth:2001年1月5日、number.surgeries.lifetime:12、number.surgeries.12months:4、コメント:話を来るより良い方法は、このような出力にレポートとなり

月曜日
5つのレコードのそれぞれがそのフォーマットに従います。
フィールド名1:フィールド1値レコード1、フィールド名2:フィールド2値レコード1 ...
行をスキップする(または見やすいもの)
フィールド名1:フィールド1値レコード2、フィールド名2:フィールド2値レコード2

どうすればいいですか?

答えて

3

これはいかがですか?

set.seed(1) 
age <- abs(rnorm(10, 40, 20)) 
patient.key <- 101:110 
date.birth <- as.Date("2011-02-02") - age * 365 
number.surgeries.12months <- rnbinom(10, 1, .5) 
number.surgeries.lifetime <- trunc(number.surgeries.12months * (1 + age/10)) 
comments <- "comments text here" 
data <- data.frame(patient.key, 
        date.birth, 
        number.surgeries.12months, 
        number.surgeries.lifetime, 
        comments) 

サブセットに興味があり、患者やフィールドによるデータ:

selected.patients <- c(105, 109) 
selected.fields <- c("patient.key", "number.surgeries.lifetime", "comments") 
subdata <- subset(data[ , selected.fields], patient.key %in% selected.patients) 

フォーマット印刷の結果。

# paste the column name next to each data field 
taggeddata <- apply(subdata, 1, 
        function(row) paste(colnames(data), row, sep = ":")) 
# paste all the data fields into one line of text 
textdata <- apply(taggeddata, 2, 
        function(rec) do.call("paste", as.list(rec))) 
# write to a file or to screen 
writeLines(textdata) 
-1

ライブラリ(図形)を確認してください。データを溶かすことから始めれば、あなたの足はあなたの望む結果に向かうでしょう。それが助けになるかどうか、それがそこからどのように進むのか、私たちに教えてください。

+0

reshapeまたはreshape2は役に立ちません。それは確かにデータを長くします。しかし、それはあまりにも長く、1つは対象のストーリーの始めから最後まで永遠にスクロールします。さらに、すべての因子変数は、値ではなくレベル番号として引用されます。だから、男女の代わりに1と2の性別が見えます。 – Farrel

+0

これは解決可能な問題です。私は彼らが私の答えの実体を損なうとは思わない。 Rの喜びは、データの美しさです! melt()の前に因子を文字列に変換することができ、結果を要約し、その部分集合を検査することができます。 –

0

私は自分自身を繰り返す危険性が、私はRMySQLパッケージのさらに別のケースを作ってあげます。あなたはあなたの好きなSQLクライアント(私はSequelProをお勧めします)であなたのデータベースを編集することができます。 SELECT文を使用する/フィルタリングして編集します。たとえば、

SELECT patentid, patentname, inability FROM patients LIMIT 5 

は、必要なフィールドのみを表示できます。素晴らしいSQLクライアントを使用すると、結果を直接編集し、その結果をデータベースに格納することができます。その後、データベースをRにリロードすることができます。多くの人々が、あなたのデータセットがこのようなオーバーヘッドには小さすぎると主張しますが、私はRのほとんどのSQLエディタの編集プロパティを好みます。それが難しくなるとテーブルを結合する。さらに、Rの表のように扱われるビュー(「テーブル」はアクセス時に更新される)を書くのに興味深いかもしれません。

+0

どうしたの? –

+0

私は、LibreOfficeベースのMicrosoft Accessやウィザードを使ってレポートを作成するなどの単純なデータにデータをエクスポートするオプションを検討しました。データベース内の1行を複数の行にまたがって表示できるようにレポートを設定する方法があります。しかし、それは、コメント欄の1つに長いコメントや短いコメントを付けるかどうかを知ることなく、空間的な配置にコミットすることさえあります。 – Farrel

関連する問題