我是R的新手。我们将非常感谢您的帮助。
我有输入,例如。
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)
基于上述数据帧,我需要创建一个数据帧,使得在columnB的每个后续行值从1增加到2到3,这样columnG的值永远不会超过600,我们就会停止创建行。我试图在excel中做到这一点.Below是我需要的输出。
+---------+--------+---------+---------+---------+---------+---------+
| 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 |
+---------+--------+---------+---------+---------+---------+---------+
最终结果应该是数据框
答案 0 :(得分:0)
首先,您可以计算data.frame
的长度:
userinput <- 14
N <- (600 - 8) * 25 / userinput
然后,使用dplyr
创建data.frame
:
mydf <- data_frame(ColA = 14, ColB = 1:floor(N), ColD = 25, ColF = 8) %>%
mutate(ColC = ColA * ColB, ColE = ColC/ColD, ColG = ColE + ColF)
如果您需要按正确顺序排列的列:
> 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