1
私は各グループの上位2行を合計したいデータフレームを持っていますが、その2つのエントリのうちの1つがゼロである場合、値。また、ゼロ以外の値がない場合、sum = 0にするだけです。ソートできないのでオプションではありません。私が持っているもの条件付きで各グループの最初の2行を合計する
...私が欲しいもの
ID | Prod1
---|------
A | 2
A | 5
A | 9
B | 3
B | 0
B | 0
B | 8
B | 10
C | 0
C | 12
C | 0
C | 0
...
ID | Prod1
---|------
A | 7
B | 11
C | 0
DATA
dput(df)
structure(list(ID = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
3L, 3L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor"),
Prod1 = c(2L, 5L, 9L, 3L, 0L, 0L, 8L, 10L, 0L, 12L, 0L, 0L
)), .Names = c("ID", "Prod1"), class = "data.frame", row.names = c(NA,
-12L))
ニースに埋めます。私はその方法がすべての条件を満たすと思っていませんでしたし、私はグループCのためにこのようにそれを行うために私は書いた "汚い"機能を行うために12を得ていた:) – Sotos
うん。私は 'sum'でna.rm = TRUEを使ってみましたが、最終出力では12を得ました。私は、Rが、デフォルトで生成されるNAの代わりに、cグループのi [!= 0] [1:2]のNAを0で置き換えることを意味すると思います。 – lmo
これは完全に機能しました!どうもありがとうございます。私は集計関数をよく知っていますが、関数(i)sum(i [i!= 0] [1:2])のコードではどういう意味ですか? (i [i!= 0] [1:2])私があなたの変数である関数を与えることを言っているだけです。私が0に等しくないことを意味することを理解しています。また、2つの項目の合計を1行に入れたいのであれば、関数はsum(i [1:2])ですか? – PVic