My data frame looks like this
> tornado_frame
tornado_names Level value
1 node per cluster low -34.72222
2 TB per node low -52.08333
3 expense per cluster low -104.16667
4 Total TB low -62.50000
5 revenue per cluster low -52.08333
6 node per cluster high 20.83333
7 TB per node high 41.66667
8 expense per cluster high 52.08333
9 Total TB high 145.83333
10 revenue per cluster high 156.25000
I want the table to transform into this
> tornado_frame
tornado_names Level value
1 node per cluster low 34.72222
2 TB per node low 52.08333
3 expense per cluster low 104.16667
4 Total TB low -62.50000
5 revenue per cluster low -52.08333
6 node per cluster high -20.83333
7 TB per node high -41.66667
8 expense per cluster high -52.08333
9 Total TB high 145.83333
10 revenue per cluster high 156.25000
Where the negative sign in "value" changes if its absolute value is greater than that of the "high" Level column and of the same tornado_name column.
I tried a few nested if's but that got messy for me. Any help would be appreciated!
Here is my data:
> dput(tornado_frame)
structure(list(tornado_names = structure(c(2L, 4L, 1L, 5L, 3L,
2L, 4L, 1L, 5L, 3L), .Label = c("expense per cluster", "node per cluster",
"revenue per cluster", "TB per node", "Total TB"), class = "factor"),
Level = structure(c(2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L
), .Label = c("high", "low"), class = "factor"), value = c(34.72222,
52.08333, 104.16667, -62.5, -52.08333, -20.83333, -41.66667,
-52.08333, 145.83333, 156.25)), .Names = c("tornado_names",
"Level", "value"), class = "data.frame", row.names = c(NA, -10L
))