1

次のようなデータがあります。

ID Year Measurement
1  2009 5.6
1  2010 6.2
1  2011 4.5
2  2008 6.4
2  2009 5.2
3  2008 3.5
3  2010 5.6 
4  2009 5.9
4  2010 2.2
4  2011 4.1
4  2012 5.5

被験者は、開始年と終了年が異なる数年間にわたって測定されます。被験者はまた、異なる回数測定されます。測定開始年と測定終了年の間に毎年測定されていない被験者を削除したいと考えています。したがって、上記のデータでは、被験者 3 は 2009 年に測定できなかったので削除してほしいと思います。

Yearunique ごとに変数の最大値と最小値を取得する for ループを実行することを考えましたID。次に、各プレーヤーの最大値と最小値の差を取り、1 を追加します。次に、データ内に出現するそれぞれの一意の回数を数え、IDそれらが等しいかどうかを確認します。これは機能するはずですが、これを行うには、より迅速で効率的な方法が必要だと感じています。

4

3 に答える 3

1

ここに代替案があります

> ind <- aggregate(Year~ID, FUN=function(x) x[2]-x[1], data=df)$Year>1
> df[!df$ID==unique(df$ID)[ind], ]
   ID Year Measurement
1   1 2009         5.6
2   1 2010         6.2
3   1 2011         4.5
4   2 2008         6.4
5   2 2009         5.2
8   4 2009         5.9
9   4 2010         2.2
10  4 2011         4.1
11  4 2012         5.5
于 2013-10-23T21:39:43.277 に答える