2016-06-18 2 views
0

私は約6ヶ月間Rを使用するように教えてきましたが、ソリューションをオンラインで見つけることができない場合、それはあいまいな問題か、 。インポートされた日付をmemisc経由でSPSSポータブルファイルに変換

私はこれが後者であると思います。日付が数値形式でインポートされているように見える除いて、私は精通していないよ、

misc.MP.data <- as.data.frame(
as.data.set(
spss.portable.file("SPSS data.por"))) 

すべてが素晴らしい作品(と私は」:

は基本的に私が使用してRのmemiscパッケージを経由してSPSSファイルをインポートしましたオンラインで類似のものを見つける運がなかった)。例えば

:-1393183488 :として-1394738688

  • 1946年11月12日輸入:11489040000のとして
  • 23/11/1946輸入:として

    • 1946年10月11日輸入
    • 18/12/1946輸入:-1,392,578,688

    私はRとSPSSの日付の参照点が異なりますが、それに基づいてどこにでも私を(例えばthis function経由で)得ることができませんでした。

    とにかく、どんな助けでも大歓迎です。

    EDIT:あなたの応答のためのみんなに

    おかげで、それが発生した正確なぜわからないだが、私は、問題を解決するために管理。データを保存し、インポート時

    私は通常私がいない簡単R.

    にデータをインポートする方法RにSPSSから移動しようとしているが、この例では、私は地元の団体を教えていた、csv形式を使用しますSPSSを持っているので、私はPSPPを使ってSPSSファイルを読み込んで理解し、インポートがうまくいったかどうかを確認していました。しかし、変数ラベルが正しくインポートされないというRの 'foreign'コマンドなどを使用して.savファイルをインポートしようとしたときに見つかりました。

    少し試行錯誤した結果、私はPSPP経由で移植可能なフォーマットファイルとして保存し、memiscパッケージからread.portableコマンドを使ってインポートすると、 11/1946)。

    私はSPSSやRは当初、日付の異なる塩基を使用し実現が、私は(下のグラフを参照)インポートSPSS日が正しい日付と予想される直線的な関係を共有していないようでした気づい: Imported date vs. correct date scatter

    私はこれがなぜ起こったのか分かりませんでしたが、PSPPの変数タイプを 'date'から 'string'に変更し、

    as.Date(MP.data$dob, format = "%d-%b-%Y") 
    

    ウィッシュ私はこれを簡単な方法で早くやったと思っていました!

  • +0

    10/11/1946が11,489,040,000と実際にインポートされましたか?それはそれが起こる前の他の日の後に12,000,000,000秒として輸入することは特有のようです。 – Benjamin

    +0

    Benjaminさんに感謝します。実際には、私はそれが単純に基盤を変える問題ではないと思っていたのです。 – Giles

    答えて

    0

    私は理由を理解することはできませんが、日付の起源は1991-02-02 19:24:48 ESTと思われます。どうやってこれを決めたの?

    私はあなたの数値は陰性であったPOSIXctオブジェクト

    dt <- c("23/11/1946", "11/12/1946", "18/12/1946") 
    dt <- as.POSIXct(dt, format = "%d/%m/%Y") 
    

    にあなたの知ら日付を変換。私はそれらをベクトルに入れましたが、起源を見つけるために、私は逆数を乗算する必要があることも知っていました。

    num <- c(-1394738688, -1393183488, -1392578688) 
    dt + num * -1 
    

    また、なぜこのような場合がわかりません。しかし、少なくとも、コンバージョンの基になる起源を特定することができます。あなたも、将来的にあなたを支援するための機能にこれをバンドルすることができます

    find_origin <- function(known_date, known_numeric, ...) 
    { 
        #* ... additional arguments to as.POSIXct 
        as.POSIXct(known_date, ...) + known_numeric * -1 
    } 
    
    +0

    このBenjaminにはありがとう!ほんとうにありがとう。 – Giles

    1

    クマを念頭に置いて、ポータブルファイル形式は廃止されており、統計のすべての機能をサポートしていないこと。 Unicodeモードや長い変数名はサポートしていません。データの保存方法を制御できる場合は、他の多くのフォーマットを使用してください。 SPSSで

    日付は私がspss.portable.fileは、日付値をどのように扱うかは考えているが、ドキュメントには言及していない、その値は10月14日からの秒数である浮動小数点数として1582

    を格納していますファイル内の書式情報を使用して、日付値であることを知る唯一の方法です。

    私は、あなたがポータブルおよび上記のようなコードを読んとして掲載され、生の数字は、あなたが報告されたものと一致していない、でも正の値の範囲内の値で日付変数で知られているSAVファイルをエクスポートし、試してみました私はそのデータについて慎重であろう。

    しかし、その後、私はこの
    as.POSIXct(DTAの$ BDATE、起源=「1582年10月15日」)
    のような知られているの起源を使用してasPOSIXct変換を試してみましたが、番号が一致しました。起点日付は14日ではなく10月15日であることに注意してください。日付に時間成分がある場合は、asPOSIXctにtz引数を指定する必要があります。

    関連する問題