Dr Eberhard W Lisse
2021-Oct-25 15:49 UTC
[R] cleanup/replacing a value on condition of another value
Rui, that works for me too, but is not what I need to do. I want to make the 'cases' value for this particular country AND this particular date AND this particular type AND this particular value (ie ALL conditions must be fulfilled) become NA so that the tibble would change from [...] 2 Namibia 2021-10-24 death 4 3 Namibia 2021-10-23 confirmed 357 4 Namibia 2021-10-23 death 1 [...] to [...] 2 Namibia 2021-10-24 death 4 3 Namibia 2021-10-23 confirmed 357 4 Namibia 2021-10-23 death 1 [...] as long as they don't fix the dataset, and if/when they do it goes to the expected 23 value :-)-O greetings, el On 2021-10-25 17:26 , Rui Barradas wrote: > Hello, > > The following works with me. > > > library(coronavirus) > library(dplyr) > > data(coronavirus, package = "coronavirus") > #update_dataset(silence = FALSE) > > coronavirus %>% > select(country, date, type, cases) %>% > filter( > country == 'Namibia', > date == '2021-10-23', > cases == 357 > ) > > > > Can you post the pipe code you are running? > > Hope this helps, > > Rui Barradas > > ?s 12:25 de 25/10/21, Dr Eberhard W Lisse escreveu: >> Hi, >> >> I have data from JHU via the 'coronavirus' package which has a value for >> the confirmed cases for 2021-10-23 which differs drastically (357) from >> what is reported in country (23). >> >> # A tibble: 962 ? 4 >> country date type cases >> <chr> <date> <chr> <int> >> 1 Namibia 2021-10-24 confirmed 23 >> 2 Namibia 2021-10-24 death 4 >> 3 Namibia 2021-10-23 confirmed 357 >> 4 Namibia 2021-10-23 death 1 >> 5 Namibia 2021-10-22 confirmed 30 >> 6 Namibia 2021-10-22 death 1 >> # ? with 956 more rows >> >> I am using a '%>%' pipeline and am struggling to mutate 'cases' to NA >> using something like >> >> country == 'Namibia' & date == '2021-10-23' & cases == 357 >> >> so that if or when the data-set is corrected I don't have to change the >> code (immediately), even after some googling. >> >> I can do >> >> cases == 357 >> >> only, but that could find other cases as well, which is obviously not >> the thing to do >> >> Any suggestions? >> >> greetings, el >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >
Rui Barradas
2021-Oct-25 17:06 UTC
[R] cleanup/replacing a value on condition of another value
Hello, Here is a pipe to replace based on the composite condition. It uses ?base::replace with an integer index vector. In the end, filter is meant to show the changed value in context, remove it and assign the data.frame or tibble back to the input to change the original. library(dplyr) data(coronavirus, package = "coronavirus") coronavirus %>% select(country, date, type, cases) -> covid covid %>% mutate(cases = replace(cases, which(country == 'Namibia' & date == '2021-10-23' & cases == 357), NA) ) %>% filter( country == 'Namibia', date >= '2021-10-22' & date <= '2021-10-24' ) Hope this helps, Rui Barradas ?s 16:49 de 25/10/21, Dr Eberhard W Lisse escreveu:> Rui, > > that works for me too, but is not what I need to do. > > I want to make the 'cases' value for this particular country AND this > particular date AND this particular type AND this particular value (ie > ALL conditions must be fulfilled) become NA so that the tibble would > change from > > ????[...] > ????2 Namibia 2021-10-24 death???????? 4 > ????3 Namibia 2021-10-23 confirmed?? 357 > ????4 Namibia 2021-10-23 death???????? 1 > ????[...] > > to > > ????[...] > ????2 Namibia 2021-10-24 death???????? 4 > ????3 Namibia 2021-10-23 confirmed?? 357 > ????4 Namibia 2021-10-23 death???????? 1 > ????[...] > > as long as they don't fix the dataset, and if/when they do it goes to > the expected 23 value :-)-O > > greetings, el > > On 2021-10-25 17:26 , Rui Barradas wrote: > > Hello, > > > > The following works with me. > > > > > > library(coronavirus) > > library(dplyr) > > > > data(coronavirus, package = "coronavirus") > > #update_dataset(silence = FALSE) > > > > coronavirus %>% > >??? select(country, date, type, cases) %>% > >??? filter( > >????? country == 'Namibia', > >????? date == '2021-10-23', > >????? cases == 357 > >??? ) > > > > > > > > Can you post the pipe code you are running? > > > > Hope this helps, > > > > Rui Barradas > > > > ?s 12:25 de 25/10/21, Dr Eberhard W Lisse escreveu: > >> Hi, > >> > >> I have data from JHU via the 'coronavirus' package which has a value > for > >> the confirmed cases for 2021-10-23 which differs drastically (357) from > >> what is reported in country (23). > >> > >>????? # A tibble: 962 ? 4 > >>??????? country date?????? type????? cases > >>??????? <chr>?? <date>???? <chr>???? <int> > >>????? 1 Namibia 2021-10-24 confirmed??? 23 > >>????? 2 Namibia 2021-10-24 death???????? 4 > >>????? 3 Namibia 2021-10-23 confirmed?? 357 > >>????? 4 Namibia 2021-10-23 death???????? 1 > >>????? 5 Namibia 2021-10-22 confirmed??? 30 > >>????? 6 Namibia 2021-10-22 death???????? 1 > >>????? # ? with 956 more rows > >> > >> I am using a '%>%' pipeline and am struggling to mutate 'cases' to NA > >> using something like > >> > >>????? country == 'Namibia' & date == '2021-10-23' & cases == 357 > >> > >> so that if or when the data-set is corrected I don't have to change the > >> code (immediately), even after some googling. > >> > >> I can do > >> > >>????? cases == 357 > >> > >> only, but that could find other cases as well, which is obviously not > >> the thing to do > >> > >> Any suggestions? > >> > >> greetings, el > >> > >> ______________________________________________ > >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > >> https://stat.ethz.ch/mailman/listinfo/r-help > >> PLEASE do read the posting guide > >> http://www.R-project.org/posting-guide.html > >> and provide commented, minimal, self-contained, reproducible code. > > > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
Avi Gross
2021-Oct-25 21:14 UTC
[R] cleanup/replacing a value on condition of another value
I wonder why it is not as simple as: Call mutate on the data and have a condition that looks like: data %>% mutate(cases = ifelse(multiple_cond, NA, cases) -> output -----Original Message----- From: R-help <r-help-bounces at r-project.org> On Behalf Of Dr Eberhard W Lisse Sent: Monday, October 25, 2021 11:49 AM To: r-help at r-project.org Subject: Re: [R] cleanup/replacing a value on condition of another value Rui, that works for me too, but is not what I need to do. I want to make the 'cases' value for this particular country AND this particular date AND this particular type AND this particular value (ie ALL conditions must be fulfilled) become NA so that the tibble would change from [...] 2 Namibia 2021-10-24 death 4 3 Namibia 2021-10-23 confirmed 357 4 Namibia 2021-10-23 death 1 [...] to [...] 2 Namibia 2021-10-24 death 4 3 Namibia 2021-10-23 confirmed 357 4 Namibia 2021-10-23 death 1 [...] as long as they don't fix the dataset, and if/when they do it goes to the expected 23 value :-)-O greetings, el On 2021-10-25 17:26 , Rui Barradas wrote: > Hello, > > The following works with me. > > > library(coronavirus) > library(dplyr) > > data(coronavirus, package = "coronavirus") > #update_dataset(silence = FALSE) > > coronavirus %>% > select(country, date, type, cases) %>% > filter( > country == 'Namibia', > date == '2021-10-23', > cases == 357 > ) > > > > Can you post the pipe code you are running? > > Hope this helps, > > Rui Barradas > > ?s 12:25 de 25/10/21, Dr Eberhard W Lisse escreveu: >> Hi, >> >> I have data from JHU via the 'coronavirus' package which has a value for >> the confirmed cases for 2021-10-23 which differs drastically (357) from >> what is reported in country (23). >> >> # A tibble: 962 ? 4 >> country date type cases >> <chr> <date> <chr> <int> >> 1 Namibia 2021-10-24 confirmed 23 >> 2 Namibia 2021-10-24 death 4 >> 3 Namibia 2021-10-23 confirmed 357 >> 4 Namibia 2021-10-23 death 1 >> 5 Namibia 2021-10-22 confirmed 30 >> 6 Namibia 2021-10-22 death 1 >> # ? with 956 more rows >> >> I am using a '%>%' pipeline and am struggling to mutate 'cases' to NA >> using something like >> >> country == 'Namibia' & date == '2021-10-23' & cases == 357 >> >> so that if or when the data-set is corrected I don't have to change the >> code (immediately), even after some googling. >> >> I can do >> >> cases == 357 >> >> only, but that could find other cases as well, which is obviously not >> the thing to do >> >> Any suggestions? >> >> greetings, el >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.