Frage zur for Schleife

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

larsmu

Frage zur for Schleife

Beitrag von larsmu »

Guten Abend ich hab ein Problem ich habe eine Tabelle in der Jahre, Preis und Menge drin stehen.
Nun möchte ich den Umsatz der Jahre 2005 - 2010 ausrechnen und in einer Tabelle einzeln nach Jahr gegliedert darstellen.
einzeln kann ich die Umsätze ausrechnen das ist kein Problem nur in der Schleife leider nicht.
Hier wäre die Berechnung eines Jahres:
"jahre<- which(tabelle[,"jahr"]== "2005")
jahren<- tabelle[jahre,]
umsatz5<-sum(jahren[,"menge"]*jahren[,"preis"])
umsatz5"

ich hab mich auch schon an der Schleife versucht, aber komme leider nicht auf das Ergebnis.

"ende<- c()

for (i in 1:6)
{
year<-which(tabelle[,"jahr"] == "i+2004")
datenyear<-tabelle[year,]
ende<-sum(datenyear[,"menge"]*datenyear[,"preis"])
}

ende"
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Frage zur for Schleife

Beitrag von consuli »

Wir brauchen zur Lösung Deines Problems die Struktur der Tabelle, namentlich die R Antwort auf den Befehl

Code: Alles auswählen

str(<tabelle>)
Irmgard.
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

> str(tabelle)
'data.frame': 270 obs. of 4 variables:
$ jahr : int 2005 2005 2006 2005 2005 2005 2005 2006 2005 2005 ...
$ staat: chr "Deutschland" "Deutschland" "Deutschland" "Deutschland" ...
$ preis: num 6.94 21.42 37.89 19.06 29.62 ...
$ menge: int 4 7 7 10 9 1 5 5 4 7 ...
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Irgendwie ist bei dem R code etwas verloren gegangen :
er sieht eigentlich so aus

Code: Alles auswählen

ende<- c()

for (i in 1:6)
{
  year<-which(tabelle[,"jahr"] == "i+2004")
  datenyear<-tabelle[year,]
  ende[<i>]<-sum(datenyear[,"menge"]*datenyear[,"preis"])
}

ende
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Frage zur for Schleife

Beitrag von jogo »

Hallo larsmu,

willkommen im Forum!
Bitte lies die Themen im Bereich FAQ viewforum.php?f=20
besonders: viewtopic.php?f=20&t=29
(sprich: verwende die Code-Formatierungen)

Code: Alles auswählen

tabelle$umsatz <- tabelle$preis * tabelle$menge
ende <- tapply(tabelle$umsatz, tabelle$jahr, FUN=sum)
oder

Code: Alles auswählen

ende <- with(tabelle, tapply(preis*menge, jahr, FUN=sum))
Gruß, Jörg
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Vielen dank das hat mir sehr geholfen!
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Nur noch eine Frage. Ich bekomme ja nun die Jahre oben heraus und die Umsätze darunter. Wie bekomme ich die Umsätze jetzt in einen Vektor und die Jahre in einen Vektor da ich gerne noch eine Regression machen möchte.

MfG Lars
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

2005 2006 2007 2008 2009 2010 2011 2012 2015 2016
2488.38 4509.80 2545.21 3988.94 5581.81 6189.44 6391.61 6236.95 6395.16 7536.19
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Frage zur for Schleife

Beitrag von bigben »

Code: Alles auswählen

str(ende)
oder, besser noch,

Code: Alles auswählen

dput(ende)
:?:
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
larsmu

Re: Frage zur for Schleife

Beitrag von larsmu »

Aber dann bekomme ich doch nur 2 Vektoren angezeigt aber kann sie doch nicht weiter verwenden oder??

Hab mir sowas vorgestellt wie:

x<- c(2005,2006,2007,....)
y<-c(umsatz1,umsatz2,...)
Antworten