I have been trying to create a column for a dataframe where each new observation depends on the value of the observations of other columns. I tried to come up with code that would do that but haven't been any lucky
I also checked these answers ) but couldn't make them work if anyone has an idea on how to do it I would be truly grateful
for (dff$prcganancia in dff){
if(dff$grupo == 1){
prcganancia == 0.3681
}elseif(dff$grupo == 2){
prcganancia == 0.2320
}elseif(dff$grupo == 3){
prcganancia == 0.2851
}elseif(dff$grupo == 4){
prcganancia == 0.4443
}elseif(dff$grupo == 5){
prcganancia == 0.3353
}elseif(dff$grupo == 6){
prcganancia == 0.2656
}elseif(dff$grupo == 7){
prcganancia == 0.2597
}elseif(dff$grupo == 8){
prcganancia == 0.2211
}elseif(dff$grupo == 9){
prcganancia == 0.3782
}elseif(dff$grupo == 10){
prcganancia == 0.3752}
}
What my lousy code is trying to do is make the observation for prcganancia where grupo equals to 1, 0.3681 (every obsrvation where grupo == 1 the observation for prcganancia == 0.3681) and so on
Try dplyr::recode()
. You can pass either "old value = new value" pairs:
set.seed(13)
library(dplyr)
dff <- data.frame(grupo = sample(10, 10))
dff$prcganancia <- recode(
dff$grupo,
`1` = 0.3681,
`2` = 0.2320,
`3` = 0.2851,
`4` = 0.4443,
`5` = 0.3353,
`6` = 0.2656,
`7` = 0.2597,
`8` = 0.2211,
`9` = 0.3782,
`10` = 0.3752
)
Or unnamed values, which will be matched by index:
dff$prcganancia <- recode(
dff$grupo,
0.3681,
0.2320,
0.2851,
0.4443,
0.3353,
0.2656,
0.2597,
0.2211,
0.3782,
0.3752
)
Result:
grupo prcganancia
1 8 0.2211
2 3 0.2851
3 10 0.3752
4 5 0.3353
5 2 0.2320
6 7 0.2597
7 6 0.2656
8 4 0.4443
9 9 0.3782
10 1 0.3681