2016-04-28 17 views
0

Wie kann ich die Variable in R einen oberen Deckel geben?Setzen Sie eine obere Grenze für den Wert der Variablen in R

Angenommen, ich habe ein data.frame mit den Spalten "a" und "b". Werte von "b" liegen im Bereich von 1: 100. Ich möchte alle Werte> 50 gleich 50 machen.

Ich kann eine Schleife schreiben und das erledigen, aber ich brauche eine Funktion.

Antwort

4

Teilmenge einfach den Datenrahmen, wo b > 50 und aktualisieren b mit

## example data 
df <- data.frame(a = seq(1:100), 
       b = seq(1:100)) 

## subset rows where b > 50, and assign b <- 50 
df$b[df$b > 50 ] <- 50  ## thanks thelatemail 
## or 
## df[df$b > 50, "b"] <- 50 

Ein alternativer Ansatz, wie durch @Frank hervorgehoben ist, die parallel Minima Funktion zu verwenden, ?pmin

df$b = pmin(df$b, 50) 

pmin vergleicht die Eingabewerte und gibt das Minimum von ihnen zurück.

+6

Oder 'df $ b = pmin (df $ b, 50)' – Frank

+0

Danke Frank. pmin() war die Funktion, nach der ich suchte. –

+0

'df [df $ b> 50,] $ b <- 50' sieht sehr komisch aus, weil es zuerst alle' df' substrahiert, dann 'b' daraus nimmt - würde 'df $ b [df $ b> 50] <- 50' Standard sein? Ihr zweites Beispiel im auskommentierten Text scheint ebenfalls angemessen. – thelatemail

Verwandte Themen