Ich habe eine lange Liste von Zahlen, z.Berechnen Sie die Anzahl der Werte im Vektor, die Werte in der Datenspalte überschreiten.frame
set.seed(123)
y<-round(runif(100, 0, 200))
Und ich würde in Spalte y
die Anzahl von Werten speichern möchte, dass jeder Wert in Spalte x
eines Datenrahmens nicht überschreiten:
df <- data.frame(x=seq(0,200,20))
I manuell die Zahlen berechnen kann, wie folgt aus:
length(which(y>=20)) #93 values exceed 20
length(which(y>=40)) #81 values exceed 40
usw. Ich weiß, ich kann eine for-Schleife mit allen Werten von x verwenden, aber gibt es einen eleganteren Weg?
Ich versuchte dies:
df$y <- length(which(y>=df$x))
Aber das gibt eine Warnung aus und gibt mir nicht die gewünschte Ausgabe.
Der Datenrahmen sollte wie folgt aussehen:
df
x y
1 0 100
2 20 93
3 40 81
4 60 70
5 80 61
6 100 47
7 120 40
8 140 29
9 160 19
10 180 8
11 200 0
Als weitere Idee, die alles mit-allen Vergleichen und viele Additionen zu vermeiden, 'findInterval' für solche Aufgaben praktisch ist -' Länge (y) - findInterval (df $ x, sortieren (y), left.open = TRUE) ' –