I am trying to mutate data by dividing based on an identifier.
For example, I would like to mutate mass
in the following data. If it is depth 10, I would like to divide by 2. If it is depth 20, I would like to divide by 3.
day year depth mass
1 2008 10 13
2 2008 10 15
1 2008 20 14
2 2008 20 12
1 2009 10 14
2 2009 10 16
1 2009 20 12
2 2009 20 18
Division leads to:
day year depth mass
1 2008 10 6.5
1 2008 10 6.5
2 2008 10 7.5
2 2008 10 7.5
1 2008 20 4.6
1 2008 20 4.6
2 2008 20 4
2 2008 20 4
1 2009 10 7
1 2009 10 7
2 2009 10 8
2 2009 10 8
1 2009 20 4
1 2009 20 4
2 2009 20 6
2 2009 20 6
I am trying ifelse
in the following way, but get an error "unused arguments(c(13, 15, 14. . .)"
df%>%
group_by(day, year, depth) %>%
bind_rows(., .) %>%
mutate(mass = ifelse(depth == 10), mass/2,
ifelse(depth == 20), mass/3)%>%
arrange(day, year, depth, mass)
I see two errors in your use of ifelse
. where you have ifelse(depth == 10)
, you've only given ifelse
one argument where it needs three. Remove the closing parenthesis and you have a good start.
Your second error is that you didn't give any indication of what to do if the second ifelse
condition resolves to FALSE
. In the code below, I've assigned NA
to that situation. I'm not sure if that's the behavior you want, however, so you should change it to what fits your needs.
df%>%
group_by(day, year, depth) %>%
bind_rows(., .) %>%
mutate(mass = ifelse(test = (depth == 10),
yes = mass/2,
no = ifelse(test = (depth == 20),
yes = mass/3,
no = NA))) %>%
arrange(day, year, depth, mass)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With