Ich habe einen Datenrahmen z
und ich möchte die neue Spalte auf der Grundlage der Werte von zwei alten Spalten von z
erstellen. Im Anschluss wird der Prozess:erzeugen Spaltenwerte mit mehreren Bedingungen in R
>z<-cbind(x=1:10,y=11:20,t=21:30)
> z<-as.data.frame(z)
>z
x y t
1 1 11 21
2 2 12 22
3 3 13 23
4 4 14 24
5 5 15 25
6 6 16 26
7 7 17 27
8 8 18 28
9 9 19 29
10 10 20 30
# erzeugen, um die Spalte q
die auf die Werte der Spalte gleich t
mal 4 Wenn x=3
und für andere Werte von x
, es auf die Werte der Spalte t
gleich ist.
for (i in 1:nrow(z)){
z$q[i]=if (z$x[i]==4) 4*z$t[i] else z$t[i]}
Aber mein Problem ist, dass ich mehrere Bedingungen anwenden möchten:
Zum Beispiel möchte ich so etwas bekommen:
(If x=2, q=t*2; x=4, q=t*4; x=7, q=t*3; for other it is equal to t)
> z
x y t q
1 1 11 21 21
2 2 12 22 44
3 3 13 23 23
4 4 14 24 96
5 5 15 25 25
6 6 16 26 26
7 7 17 27 81
8 8 18 28 28
9 9 19 29 29
10 10 20 30 30
Wie kann ich die zweite Ausgabe erhalten mit die Schleifen oder irgendeine andere Methode?
Außerdem ist es besser, 'ifelse' zu verwenden als die' for' Schleife, die Sie hatten. Statt '(für i in 1: Länge (x)) y [i] <- if ... else ...' Sie können 'nur tun y <- ifelse (logisch, true, false)' –
@ Señor: Aufgrund Ihres Vorschlags habe ich die Antwort auf meine eigene Frage gepostet. Vielen Dank! – Metrics