0

これは再現可能なテストデータセットです

mydata <- structure(list(subject = c(1, 1, 1, 2, 2, 2, 3, 3, 3), time = c(0, 1, 2, 0, 1, 2, 0, 1, 2), measure = c(10, 12, 8, 7, 0, 0, 5, 3, NA)), .Names = c("subject", "time", "measure"), row.names = 1:9, class = "data.frame")

mydata

subject  time  measure
1          0      10
1          1      12
1          2       8
2          0       7
2          1       0
2          2       0
3          0       5
3          1       3
3          2      NA

measureNAあるすべての行と、同じ に対応するすべての行を削除したいと思いsubjectます。したがって、上記の例では、次のようになります。

subject  time  measure
1          0      10
1          1      12
1          2       8
2          0       7
2          1       0
2          2       0

最初にワイドフォーマットに再形成せずにこれを行う簡単な方法はありますか?

4

2 に答える 2

2

私はこれが必要だとは思わreshapingないave。私があなたの質問を正しく理解していれば、それは単なるsubsetting問題です。

mydata[!with(mydata, subject %in% subject[is.na(measure)]), ]

#   subject time measure
# 1       1    0      10
# 2       1    1      12
# 3       1    2       8
# 4       2    0       7
# 5       2    1       0
# 6       2    2       0
于 2013-02-10T10:43:15.277 に答える
0

あなたが使用することができます:

mydata[with(mydata, as.logical(ave(measure, subject, FUN=function(x) ifelse(any(is.na(x)), 0, 1)))),]
#   subject time measure
# 1       1    0      10
# 2       1    1      12
# 3       1    2       8
# 4       2    0       7
# 5       2    1       0
# 6       2    2       0
于 2013-02-10T08:24:52.650 に答える