2016-08-03 3 views
0

Ich habe das für einen Datenrahmen mit nur drei Spalten getan. Ich möchte alle Variablen durch "c" Variable teilen.Erstellen Sie neue Variablen, die alle Variablen eines Datenrahmens durch die gleiche Variable in jeder Zeile teilen - R

> d <- data.frame(rep(2,7),rep(4,7),rep(8,7)) 
> colnames(d) <- c("a","b","c") 
> #Creating the new variables 
> d$c1 <- d$a/d$b 
> d$c2 <- d$a/d$c 
> d 
    a b c c1 c2 
1 2 4 8 0.5 0.25 
2 2 4 8 0.5 0.25 
3 2 4 8 0.5 0.25 
4 2 4 8 0.5 0.25 
5 2 4 8 0.5 0.25 
6 2 4 8 0.5 0.25 
7 2 4 8 0.5 0.25 

Aber was, wenn das Datenrahmen mehr als hundert Spalten haben, wie kann ich eine Schleife oder etwas mit der Familie gelten die neuen Variablen zu erstellen?

Antwort

2

Ich denke, Sie brauchen nicht *apply oder eine Schleife. Versuchen Sie:

cbind(d, d[, 1]/d[, -1]) 

Aber Sie müssen Spaltennamen auf Ihre gewünschten setzen.

d <- setNames(data.frame(rep(2,7),rep(4,7),rep(8,7)), letters[1:3]) 
cbind(d, d[, 1]/d[, -1]) 
# a b c b c 
#1 2 4 8 0.5 0.25 
#2 2 4 8 0.5 0.25 
#3 2 4 8 0.5 0.25 
#4 2 4 8 0.5 0.25 
#5 2 4 8 0.5 0.25 
#6 2 4 8 0.5 0.25 
#7 2 4 8 0.5 0.25 
+0

Danke, ich habe gerade versucht, es war viel einfacher als ich dachte. – CreamStat

Verwandte Themen