2017-12-06 4 views
1

Ich versuche, eine Mittelwertberechnung als Teil eines größeren Codes zu verwenden. Die Idee ist, den Mittelwert aus einer Reihe von Werten innerhalb einer Spalte zu berechnen, aber nicht die ganze Spalte.R - mittlere Funktion des Spaltenabschnitts

Zum Beispiel von column_x (10 Einträge) in yFile, berechnen den Mittelwert der letzten 4 Werte:

column_x 
1 
5 
8 
3 
0 
3 
3 
7 
9 
9 

Result = 7 

Das ist, was ich habe:

avg_subx <- mean(yFile$column_x, 7:10, trim = 0, na.rm = FALSE) 

Aber für einige Grund, das Ergebnis, das ich zurückbekomme, ist nicht der richtige Wert. Kannst du mir helfen herauszufinden, wo ich falsch liege?

Danke!

+1

Index die Spalte, die Sie explizit übergeben wie: 'Mittelwert (yFile $ Spalte_x [(nrow (yFile) - 3): nrow (yFile)])' – Zach

+0

Das Problem ist, dass es die Linienbegrenzung nicht erkennt und den Mittelwert bildet ganze Spalte stattdessen. Irgendwelche Ratschläge, wie man den Durchschnitt auf die letzten vier Einträge begrenzt? Vielen Dank! – EBB

+0

Wenn Sie den Code verwenden, den ich eingefügt habe, wird es funktionieren. – Zach

Antwort

2

haben Sie mit tail Funktion versucht? Mit tail können Sie die letzten n Werte eines data frame oder vector auswählen.

Beispiel:

avg_subx <- mean(tail(yFile$column_x,4)) 

In diesem Fall sind Sie lesen 4 Werte auswählen.

Hoffe, das kann Ihnen helfen!

+0

Ich wollte eigentlich Position angeben können. In meinem realen Datensatz entspricht es nicht unbedingt den letzten vier, aber das wird in anderen Situationen sehr hilfreich sein, danke! – EBB

+0

In diesem Fall müssen Sie Ihren 'Vektor' folgendermaßen indexieren: ' avg_subx <- mean (yFile $ column_x [c (1,5,7,8)]) ' –

Verwandte Themen