Christopher W Ryan
2022-Mar-14 16:26 UTC
[R] how to rename variables by lopping off first 3 characters
I have data coming to me from another source, in which some of the variable names begin with "i.." As in "i..actual_meaningful_var_name" I would like to remove the first three characters from any variable name if they are "i.." I'm using R on Win 10 and dplyr, so ideally I'm looking for a dplyr solution. Apparently I'm just not understanding how the various select, contains, rename_at, rename_with, and so-on dplyr expressions work. I've tried various arrangements of them, usually resulting in Error: `contains()` must be used within a *selecting* function. i See <https://tidyselect.r-lib.org/reference/faq-selection-context.html> A simple select(contains(foo)) I can do fine, to select a subset of variables. It's combining it with renaming that I am struggling with. Grateful for any advice. Thanks. --Chris Ryan [[alternative HTML version deleted]]
Stefan Schreiber
2022-Mar-14 17:07 UTC
[R] how to rename variables by lopping off first 3 characters
This should work (couldn't check - not at my computer right now): my_df %<% rename_at(vars(starts_with("i..")), funs(str_replace(., "i..", ""))) There are also a lot of tutorials on the internet. Google something like "rename_at str_replace" HTH, Stefan On Mon, Mar 14, 2022, 10:27 Christopher W Ryan via R-help, < r-help at r-project.org> wrote:> I have data coming to me from another source, in which some of the variable > names begin with "i.." > > As in "i..actual_meaningful_var_name" > > I would like to remove the first three characters from any variable name if > they are "i.." > > I'm using R on Win 10 and dplyr, so ideally I'm looking for a dplyr > solution. Apparently I'm just not understanding how the various select, > contains, rename_at, rename_with, and so-on dplyr expressions work. I've > tried various arrangements of them, usually resulting in > > Error: `contains()` must be used within a *selecting* function. > i See <https://tidyselect.r-lib.org/reference/faq-selection-context.html> > > A simple select(contains(foo)) I can do fine, to select a subset of > variables. It's combining it with renaming that I am struggling with. > > Grateful for any advice. > > Thanks. > > --Chris Ryan > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. >[[alternative HTML version deleted]]
Bert Gunter
2022-Mar-14 17:11 UTC
[R] how to rename variables by lopping off first 3 characters
If you care to entertain this, one of many simple base R ways to do this is: dat <- data.frame( + i..One = 1:3, + i..Two = letters[1:3], + ixx = 5:7)> dati..One i..Two ixx 1 1 a 5 2 2 b 6 3 3 c 7> nm <- names(dat) > nm <- ifelse(substring(nm, 1,3) == "i..",+ substring(nm,4), + nm)> names(dat) <- nm > datOne Two ixx 1 1 a 5 2 2 b 6 3 3 c 7 Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Mon, Mar 14, 2022 at 9:27 AM Christopher W Ryan via R-help <r-help at r-project.org> wrote:> > I have data coming to me from another source, in which some of the variable > names begin with "i.." > > As in "i..actual_meaningful_var_name" > > I would like to remove the first three characters from any variable name if > they are "i.." > > I'm using R on Win 10 and dplyr, so ideally I'm looking for a dplyr > solution. Apparently I'm just not understanding how the various select, > contains, rename_at, rename_with, and so-on dplyr expressions work. I've > tried various arrangements of them, usually resulting in > > Error: `contains()` must be used within a *selecting* function. > i See <https://tidyselect.r-lib.org/reference/faq-selection-context.html> > > A simple select(contains(foo)) I can do fine, to select a subset of > variables. It's combining it with renaming that I am struggling with. > > Grateful for any advice. > > Thanks. > > --Chris Ryan > > [[alternative HTML version deleted]] > > ______________________________________________ > 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
2022-Mar-14 17:52 UTC
[R] how to rename variables by lopping off first 3 characters
Hello, I have already seen those names starting with 'i..' several times but I don't remember where nor why. I think it has to do with encoding. Or maybe special characters. I have the impression that the best solution was to read the data in a way as to avoid the problem. Using Bert's example data set, here are base R and tidyverse solutions. dat <- data.frame( i..One = 1:3, i..Two = letters[1:3], ixx = 5:7) # base R names(dat) <- sub("^i\\.\\.", "", names(dat)) names(dat) # tidyverse dplyr::rename_with(dat, .fn = \(x) sub("^i\\.\\.", "", x), starts_with("i..")) Hope this helps, Rui Barradas ?s 16:26 de 14/03/2022, Christopher W Ryan via R-help escreveu:> I have data coming to me from another source, in which some of the variable > names begin with "i.." > > As in "i..actual_meaningful_var_name" > > I would like to remove the first three characters from any variable name if > they are "i.." > > I'm using R on Win 10 and dplyr, so ideally I'm looking for a dplyr > solution. Apparently I'm just not understanding how the various select, > contains, rename_at, rename_with, and so-on dplyr expressions work. I've > tried various arrangements of them, usually resulting in > > Error: `contains()` must be used within a *selecting* function. > i See <https://tidyselect.r-lib.org/reference/faq-selection-context.html> > > A simple select(contains(foo)) I can do fine, to select a subset of > variables. It's combining it with renaming that I am struggling with. > > Grateful for any advice. > > Thanks. > > --Chris Ryan > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.