Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Conditional calculations for rows in dataframe R

in my dataset in the column "new" I would like to do the following:
if the percentage is bigger than 100% I would like to subtract that percentage from 200%, e.g. if the value is 120% I want the new value in the row to be 200%-120% which would be 80%. How can I achieve that? Thank you!

jointdataset1 <- structure(list(group = c("Interests", "Interests", "Interests", 
"Interests", "Interests", "Interests", "Interests", "Interests", 
"Interests", "Interests", "Interests", "Interests"), mean_name = c("Administrating processes", 
"Analytical", "Art and Culture", "Commercial activities", "Creative", 
"Helping/supporting", "Leading", "Networking", "Physical", "Practical", 
"Technical", "Transforming Processes"), means.x = c(4, 4, 1, 
4, 3, 3, 3, 3, 3, 6, 6, 1), means.y = c(4, 5.5, 1, 5, 3, 4, 4.5, 
3.5, 2.5, 5.5, 6.5, 3), new = c("100.0%", "72.7%", "100.0%", 
"80.0%", "100.0%", "75.0%", "66.7%", "85.7%", "120.0%", "109.1%", 
"92.3%", "33.3%")), class = "data.frame", row.names = c(NA, -12L
))

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

If you want the "new" column to still have the % sign, you can do the following:

library(dplyr)
jointdataset1 %>%
  mutate(value = as.numeric(sub("\\%.*", "", new)),
         new_value = ifelse(value > 100, 200 - value, value),
         new = paste0(new_value,'%')) %>%
  dplyr::select(c(-value, -new_value))

Output:

       group                mean_name means.x means.y   new
1  Interests Administrating processes       4     4.0  100%
2  Interests               Analytical       4     5.5 72.7%
3  Interests          Art and Culture       1     1.0  100%
4  Interests    Commercial activities       4     5.0   80%
5  Interests                 Creative       3     3.0  100%
6  Interests       Helping/supporting       3     4.0   75%
7  Interests                  Leading       3     4.5 66.7%
8  Interests               Networking       3     3.5 85.7%
9  Interests                 Physical       3     2.5   80%
10 Interests                Practical       6     5.5 90.9%
11 Interests                Technical       6     6.5 92.3%
12 Interests   Transforming Processes       1     3.0 33.3%
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading