Die aggregierten Daten in einer Spalte basierend auf Werten in einer anderen Spalte
Ich weiß, es ist ein einfacher Weg, dies zu tun...aber, ich kann ' T es herausfinden.
Ich habe einen dataframe in mein R-Skript, das ungefähr so aussieht:
A B C
1.2 4 8
2.3 4 9
2.3 6 0
1.2 3 3
3.4 2 1
1.2 5 1
Beachten Sie, dass A, B und C sind die Spaltennamen. Und ich versuche, Variablen wie diese:
sum1 <- [the sum of all B values such that A is 1.2]
num1 <- [the number of times A is 1.2]
Einen einfachen Weg, dies zu tun?
Ich wollen im Grunde, am Ende mit einem Daten-frame, das aussieht wie dieses:
A num totalB
1.2 3 12
etc etc etc
Wo "num" ist die Anzahl der Zeiten, die insbesondere Einen Wert erschien, und "totalB" ist die Summe der B-Werte gegeben, die Einen Wert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde verwenden
aggregate
um die beiden Aggregate und dannmerge
Sie in einem einzelnen Daten-frame:subset
es, z.B.aggregate(B~A,subset(df,C==1),sum)
Hier ist eine Lösung mit der
plyr
PaketHier ist eine Lösung mit
data.table
für Speicher-und Zeit-EffizienzZur Teilmenge nur Zeilen, in denen
C==1
(gemäß dem Kommentar zu @aix Antwort)In
dplyr
: