0

私の質問の背景は次のとおりです。行ごとに1つのデータポイントの繰り返し測定で構成されるデータセットがあります。これらのデータは縦断研究からのものであるため、現時点ではすべての被験者がすべてのデータ ポイントを持っているわけではありません。

基準を満たすすべてのデータ ポイント、つまりすべての反復測定、または 2 つの反復測定を持つデータ ポイントを抽出できるようにしたいと考えています。

簡単な例を次に示します。

subject.id <- c( 0, 0, 0, 1, 1, 1, 2, 2, 3 )
visit <- c( 0, 1, 2, 0, 1, 2, 0, 1, 0 )
data.value <- c( 32, 35, 38, 12, 18, 24, 9, 13, 21 )
data.from.study <- data.frame( subject.id, visit, data.value )

その結果:

  subject.id visit data.value
1          0     0         32
2          0     1         35
3          0     2         38
4          1     0         12
5          1     1         18
6          1     2         24
7          2     0          9
8          2     1         13
9          3     0         21

そう:

  • 被験者 0 と 1 には、ベースラインと 2 つの反復測定があります。
  • 被験者 2 には、ベースライン測定値と 1 つの反復測定値があり、
  • 被験者 3 にはベースライン メジャーしかありません。

すべてのデータが含まれている 2 つの繰り返し測定値 (または 1 つまたはベースラインのみ) を持つすべての被験者を選択的にサブセット化できるようにしたいと考えています。

> data.2.measures <- ??
> data.2.measures
      subject.id visit data.value
    1          0     0         32
    2          0     1         35
    3          0     2         38
    4          1     0         12
    5          1     1         18
    6          1     2         24

この例を使用して、場所をサブセット化できます - visit == 2。しかし、2番目の訪問データポイントを持つ被験者について、訪問0と1のデータを抽出する方法もわかりません。概念的には、subject.id を知っていて、この情報を何らかの方法で使用できることがわかりますが、リストを使用してサブセット化する方法がわかりません。潜在的なヘルプの%in%演算子はここにありますか?

何かご意見は?前もって感謝します。

4

2 に答える 2

2

これは、 を使用して簡単に実現できますdplyr。だからあなたはgroup_by数えることによってそしてますsubject.idfilterしたがって、この例では、次のようになります。

library(dplyr)

subject.id <- c( 0, 0, 0, 1, 1, 1, 2, 2, 3 )
visit <- c( 0, 1, 2, 0, 1, 2, 0, 1, 0 )
data.value <- c( 32, 35, 38, 12, 18, 24, 9, 13, 21 )
data.from.study <- data.frame( subject.id, visit, data.value )

data.from.study %>% group_by(subject.id) %>%
  filter(n() == 3)

出力があります:

Source: local data frame [6 x 3]
Groups: subject.id

  subject.id visit data.value
1          0     0         32
2          0     1         35
3          0     2         38
4          1     0         12
5          1     1         18
6          1     2         24
于 2015-05-19T07:19:50.073 に答える