1

私が使用しているこの国の年ごとのイベント データを簡単にコーディングする方法を考案するのを手伝ってもらえないかと思っていました。

以下の例では、各行が進行中のイベントに対応しています (最終的にはより広範なパネル データ セットに折り畳まれるため、現在は何も表示されていないように見えます)。たとえば、国 29 では 1920 年にイベントが発生し、それは 1921 年に続きました (そして終了しました)。国 23 では 1921 年にイベントが発生し、それは 1923 年まで続きました。 1921年に発生し、1921年にのみ発生したなど.

country     year
  29        1920
  29        1921
  23        1921
  23        1922
  23        1923
  35        1921
  64        1926
  135       1928
  135       1929
  135       1930
  135       1931
  135       1932
  135       1933
  135       1934
  120       1930
  70        1932

私がやりたいのは、「開始」変数と「進行中」変数を作成することです。このサンプル データ フレームの「進行中」の変数は簡単です。基本的:Data$ongoing <- 1

「onset」変数の作成にもっと興味があります。特定の国でのイベントの開始を示す場合は、1 としてコード化されます。基本的には、このサンプル データを使用して、このような変数を作成したいと考えています。

country     year     onset
  29        1920       1
  29        1921       0  
  23        1921       1
  23        1922       0
  23        1923       0
  35        1921       1
  64        1926       1
  135       1928       1
  135       1929       0
  135       1930       0
  135       1931       0
  135       1932       0
  135       1933       0
  135       1934       0
  120       1930       1
  70        1932       1

R でこれを簡単に行う方法 (Excel などのスプレッドシート プログラムで作業する際の人的エラーの可能性を最小限に抑える方法) を考えていただければ幸いです。この関連する質問は見ましたが、この人のデータ セットは私のものとは異なり、別のアプローチが必要になる場合があります。

ありがとう。このサンプル データの再現可能なコードは次のとおりです。

country <- c(29,29,23,23,23,36,64,135,135,135,135,135,135,135,120,70)
year <- c(1920,1921,1921,1922,1923,1921,1926,1928,1929,1930,1931,1932,1933,1934,1930,1932)

Data=data.frame(country=country,year=year)
summary(Data)
Data
4

2 に答える 2

5

これは、国ごとに複数の発症があっても機能するはずです。

Data$onset <- with(Data, ave(year, country, FUN = function(x)
                 as.integer(c(TRUE, tail(x, -1L) != head(x, -1L) + 1L))))
于 2013-06-10T23:42:39.470 に答える
0

これを行うこともできます:

library(data.table)  
setDT(Data)[, onset := (min(country*year)/country  == year) + 0L, country]

より大きなデータセットがある場合、これは非常に高速になる可能性があります。

于 2016-11-06T07:21:54.383 に答える