[R] how to rename variables by lopping off first 3 characters

Bill Dunlap w||||@mwdun|@p @end|ng |rom gm@||@com
Mon Mar 14 19:36:42 CET 2022


The dots may appear because you don't use check.names=FALSE with
read.table().  E.g.,

> read.table(text="Temp (\u{b0}C)\tLength (cm)\n37.8\t145\n", sep="\t",
header=TRUE)
  Temp...C. Length..cm.
1      37.8         145
> read.table(text="Temp (\u{b0}C)\tLength (cm)\n37.8\t145\n", sep="\t",
header=TRUE, check.names=FALSE)
  Temp (°C) Length (cm)
1      37.8         145

-Bill


On Mon, Mar 14, 2022 at 10:57 AM Rui Barradas <ruipbarradas using sapo.pt> wrote:

> 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 using 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 using 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]]



More information about the R-help mailing list