2014-02-24 6 views
11

Ich möchte das Minimum von zwei Spalten und erstellen Sie eine Spalte in der gleichen data.frame. Wie kann ich das tun?Holen Sie sich die min von zwei Spalten

Zum Beispiel:

ID Parm1 Parm2 
1  1  2 
2  0  1 
3  2  1 
4  1  0 
5  2  0 

gewünschte Ausgabe:

ID Parm1 Parm2  Min 
1  1  2  1 
2  0  1  0 
3  2  1  1 
4  1  0  0 
5  2  0  0 

Dank viel für die Hilfe.

+7

'data $ Min <- mit (Daten, pmin (Parm1, Parm2))' – rawr

Antwort

22

Sie möchten das parallele Minimum in der Funktion pmin() implementieren. Zum Beispiel unter Verwendung Ihrer Daten:

dat <- read.table(text = "ID Parm1 Parm2 
1  1  2 
2  0  1 
3  2  1 
4  1  0 
5  2  0", header = TRUE) 

Sie transform() hinzufügen, um die min Spalte als die Ausgabe von pmin(Parm1, Parm2) und Zugriff auf die Elemente der dat ohne Indizierung verwenden können:

dat <- transform(dat, min = pmin(Parm1, Parm2)) 

Das gibt:

> dat 
    ID Parm1 Parm2 min 
1 1  1  2 1 
2 2  0  1 0 
3 3  2  1 1 
4 4  1  0 0 
5 5  2  0 0 
+2

Und 'do.call (pmin, dat [-1])' wenn Sie eine Vielzahl von Variablen haben Ich möchte nur die erste ID-Variable ausschließen und Tipparbeit sparen. – thelatemail

+0

Vielen Dank für die Antwort^_^ – Ianthe

+0

Heute habe ich das gelernt. Ich habe bis jetzt eine sehr ineffiziente Art und Weise benutzt. Danke vielmals. – Jack

Verwandte Themen