final datasetデータセットが添付されています。idで0の最後のn行を削除し、最後にidで最後のn個の要素を削除します。
私はIdで
バイナリ内のすべての最後の0を削除し、idで 用テール3を選択します。 (注:Id 2の場合のみ、2
w5およびw6)。最終的なデータセットのようになります。
効率的な方法はありますか?
final datasetデータセットが添付されています。idで0の最後のn行を削除し、最後にidで最後のn個の要素を削除します。
私はIdで
バイナリ内のすべての最後の0を削除し、idで 用テール3を選択します。 (注:Id 2の場合のみ、2
w5およびw6)。最終的なデータセットのようになります。
効率的な方法はありますか?
どうやってこのようになりますか?
ID = c(rep(1, 8), rep(2, 4), rep(3, 8))
week = c(2:9, 5:8, 13:20)
binary = c(0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0)
dataset = data.frame(ID, week, binary)
> dataset
ID week binary
1 1 2 0
2 1 3 1
3 1 4 1
4 1 5 1
5 1 6 1
6 1 7 0
7 1 8 0
8 1 9 0
9 2 5 1
10 2 6 1
11 2 7 0
12 2 8 0
13 3 13 1
14 3 14 1
15 3 15 1
16 3 16 0
17 3 17 0
18 3 18 1
19 3 19 0
20 3 20 0
ソリューション:
# Split dataset by ID
byGroupDf = split(dataset, ID)
# For each grouped dataset, take only rows up till the last row where ID not equal to 0
byGroupFinal = lapply(byGroupDf, function(x) tail(x[1:max(which(x$binary != 0)),], 3))
# Combine the grouped datasets
FinalDf = do.call(rbind, byGroupFinal)
> FinalDf
ID week binary
1.3 1 4 1
1.4 1 5 1
1.5 1 6 1
2.9 2 5 1
2.10 2 6 1
3.16 3 16 0
3.17 3 17 0
3.18 3 18 1
私はあなたが – rawr
あなたの質問をフォーマットしてください?私が見るFinalとOriginalのデータセットの唯一の違いは、Finalにすべての末尾のゼロが削除されていることです。 – useR
を求めている。これは良いですが、あなたは「idで用テール3を選択する」とはどういう意味ですか何見当がつかない – useR