2017-05-22 3 views
0

Ich bin neu in R. Ihre Hilfe hier wird geschätzt.Erstellen Sie einen Datenrahmen basierend auf Eingabewerte

Ich habe Eingänge wie.

columnA <- 14 # USERINPUT 
    columnB <- 1 # Incremented from 1.2.3.etc 
    columnC <- columnA * columnB 
    columnD <- 25 # remains constant 
    columnE <- columnC/columnD 
    columnF <- 8 # remains constant 
    columnG <- columnE + columnF 
    mydf <- data.frame(columnA,columnB,columnC,columnD,columnE,columnF,columnG) 

Basierend auf dem Rahmen über Daten-I benötigen einen Datenrahmen derart zu schaffen, dass bei columnB in jedem susbsequent Zeilenwert von 1 bis 2 zu 3, so erhöht wird, dass der Wert bei columnG nie über 600 ist, und wir aufhören Zeilen erstellen Ich habe versucht, dies in Excel zu tun. Unten ist Art der Ausgabe, die ich benötigen würde.

+---------+--------+---------+---------+---------+---------+---------+ 
| columnA | columB | columnC | columnD | columnE | columnF | columnG | 
+---------+--------+---------+---------+---------+---------+---------+ 
|  14 |  1 |  14 |  25 | 0.56 |  8 | 8.56 | 
|  14 |  2 |  28 |  25 | 1.12 |  8 | 9.12 | 
|  14 |  3 |  42 |  25 | 1.68 |  8 | 9.68 | 
|  14 |  4 |  56 |  25 | 2.24 |  8 | 10.24 | 
|  14 |  5 |  70 |  25 | 2.8  |  8 | 10.8 | 
|  14 |  6 |  84 |  25 | 3.36 |  8 | 11.36 | 
|  14 |  7 |  98 |  25 | 3.92 |  8 | 11.92 | 
|  14 |  8 |  112 |  25 | 4.48 |  8 | 12.48 | 
+---------+--------+---------+---------+---------+---------+---------+ 

Das Endergebnis sollte ein Datenrahmen

Antwort

0

Zuerst die Länge des data.frame berechnen können sein:

userinput <- 14 
N <- (600 - 8) * 25/userinput 

Dann dplyr verwenden Sie den data.frame erstellen:

mydf <- data_frame(ColA = 14, ColB = 1:floor(N), ColD = 25, ColF = 8) %>% 
      mutate(ColC = ColA * ColB, ColE = ColC/ColD, ColG = ColE + ColF) 

Wenn Sie die Spalten in der richtigen Reihenfolge benötigen:

> mydf <- mydf %>% select(ColA, ColB, ColC, ColD, ColE, ColF, ColG) 

> mydf 
     ColA ColB ColD ColF ColC ColE ColG 
    1: 14 1 25 8 14 0.56 8.56 
    2: 14 2 25 8 28 1.12 9.12 
    3: 14 3 25 8 42 1.68 9.68 
    4: 14 4 25 8 56 2.24 10.24 
    5: 14 5 25 8 70 2.80 10.80 
    ---           
1053: 14 1053 25 8 14742 589.68 597.68 
1054: 14 1054 25 8 14756 590.24 598.24 
1055: 14 1055 25 8 14770 590.80 598.80 
1056: 14 1056 25 8 14784 591.36 599.36 
1057: 14 1057 25 8 14798 591.92 599.92 
Verwandte Themen