der Name der Spalte ist schon "Betrag". ich wollte nur erreichen, dass das Vorzeichen gleich korregiert wird. Wenn man von "Ausgaben" spricht, wird der Wert (oft) positiv angegeben - dass dieser Wert dann negativ zu saldieren ist, steckt ja in dem Wort "Ausgaben".bigben hat geschrieben: ↑Di Dez 19, 2017 9:08 amKannst Du mir die Formel da erklären? Schlägst Du wirklich einen Variablennamen vor, der ein Minus enthält? Den Trick mit der Klammer kannte ich nicht, aber ist das eine gute Idee?jogo hat geschrieben: ↑Mo Dez 18, 2017 3:29 pmCode: Alles auswählen
aggregate((-Betrag) ~ Jahr + Monat, data=subset(U, Betrag<0), FUN=sum)
https://cran.r-project.org/doc/manuals/ ... dentifiersIdentifiers consist of a sequence of letters, digits, the period (‘.’) and the underscore. They must not start with a digit or an underscore, or with a period followed by a digit.
Ob dies so funktioniert, habe ich jetzt wegen der Nichtbereitstellung von Daten, nicht überprüfen können.
Wenn man das Vorzeichen nicht umdrehen möchte, dann reicht
Code: Alles auswählen
aggregate(Betrag ~ Jahr + Monat, data=subset(U, Betrag<0), FUN=sum)
Code: Alles auswählen
library("lubridate")
U <- read.table(header=TRUE, text=
"Buchungstag Betrag
03.01.17 34
04.01.17 -3.4
07.01.17 34
09.01.17 -0.34
10.01.17 34
03.01.17 -34")
U$BuTag <- as.Date(U$Buchungstag, format="%d.%m.%Y")
U$Jahr <- year(U$BuTag)
U$Monat <- month(U$BuTag)
# subset(U, Betrag>=0 & Monat==1)
subset(U, Betrag<0 & Monat==1)
sum(subset(U, Betrag<0 & Monat==1)$Betrag)
aggregate(Betrag ~ Jahr + Monat, data=subset(U, Betrag<0), FUN=sum)
aggregate((-Betrag) ~ Jahr + Monat, data=subset(U, Betrag<0), FUN=sum) # Vorzeichenumkehr
aggregate(-Betrag ~ Jahr + Monat, data=subset(U, Betrag<0), FUN=sum) # ... und ohne Klammern
Danke, Berhard, dass Du mich darauf aufmerksam gemacht hast!
Wenn das so ist, kann man auch gleich
Code: Alles auswählen
aggregate(Betrag ~ Jahr + Monat + (Betrag<0), data=U, FUN=sum)
(auch hierbei wird ein unschöner Spaltenname generiert)
... oder man verwendet xtabs()
Code: Alles auswählen
U <- read.table(header=TRUE, text=
"Buchungstag Betrag
03.01.17 34
04.01.17 -3.4
07.01.17 34
09.01.17 -0.34
10.01.17 34
03.01.17 -34")
xtabs(Betrag ~ substr(U$Buchungstag, 4, 8) + (Betrag<0), data=U) # ... oder:
U$JaMo <- paste0(substr(U$Buchungstag, 7, 8), ".", substr(U$Buchungstag, 4, 5))
xtabs(Betrag ~ JaMo + (Betrag<0), data=U)
Code: Alles auswählen
library("data.table")
U <- fread(
"Buchungstag Betrag
03.01.17 34
04.01.17 -3.4
07.01.17 34
09.01.17 -0.34
10.01.17 34
03.01.17 -34")
# setnames(U[, sum(Betrag), .(substr(U$Buchungstag, 4, 8), (Betrag<0))], c("MoJa", "Ausgaben", "Betrag"))[]
dcast(U, substr(U$Buchungstag, 4, 8) ~ (Betrag<0), value.var = "Betrag", fun = sum)