Trim leading/trailing 来自数据框列的空格,其中列名作为变量
Trim leading/trailing whitespaces from a data frame column where the column name comes as a variable
我有一个数据框,其中要为空格 trimmed 的列的名称作为变量出现,我无法解析该变量以将我指向该列,以便它可以trim医学
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
employee <- c(' John Doe ',' Peter Gynn ',' Jolie Hope')
employ.data <- data.frame(employee, salary, startdate)
这里我尝试trimemployee
列,我试过dplyr:
employ.data %>% mutate(employee = trimws(employee))
有效。
但是,如果我说:
abc <- "employee"
然后
employ.data %>% mutate(abc= trimws(abc))
没用。
我试过在这个函数中使用 get(abc)
但这也不起作用。
我知道当 abc
是可变列名称时我不能将 abc
用作 employ.data$abc
。
初始数据框
employee salary startdate
John Doe 21000 2010-11-01
Peter Gynn 23400 2008-03-25
Jolie Hope 26800 2007-03-14
最终数据框
employee salary startdate
John Doe 21000 2010-11-01
Peter Gynn 23400 2008-03-25
Jolie Hope 26800 2007-03-14
使用mutate_at
library(dplyr)
employ.data %>% mutate_at(abc, trimws)
# employee salary startdate
#1 John Doe 21000 2010-11-01
#2 Peter Gynn 23400 2008-03-25
#3 Jolie Hope 26800 2007-03-14
或者你可以直接做,如果你只有一列
employ.data[[abc]] <- trimws(employ.data[[abc]])
如果有多个列你可以使用lapply
employ.data[abc] <- lapply(employ.data[abc], trimws)
您还可以在 tidyverse 中使用 stringr
中的 str_trim
。
employ.data %>%
mutate(abc = str_trim(employee))
即:
employee salary startdate abc
1 John Doe 21000 2010-11-01 John Doe
2 Peter Gynn 23400 2008-03-25 Peter Gynn
3 Jolie Hope 26800 2007-03-14 Jolie Hope
我有一个数据框,其中要为空格 trimmed 的列的名称作为变量出现,我无法解析该变量以将我指向该列,以便它可以trim医学
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
employee <- c(' John Doe ',' Peter Gynn ',' Jolie Hope')
employ.data <- data.frame(employee, salary, startdate)
这里我尝试trimemployee
列,我试过dplyr:
employ.data %>% mutate(employee = trimws(employee))
有效。 但是,如果我说:
abc <- "employee"
然后
employ.data %>% mutate(abc= trimws(abc))
没用。
我试过在这个函数中使用 get(abc)
但这也不起作用。
我知道当 abc
是可变列名称时我不能将 abc
用作 employ.data$abc
。
初始数据框
employee salary startdate
John Doe 21000 2010-11-01
Peter Gynn 23400 2008-03-25
Jolie Hope 26800 2007-03-14
最终数据框
employee salary startdate
John Doe 21000 2010-11-01
Peter Gynn 23400 2008-03-25
Jolie Hope 26800 2007-03-14
使用mutate_at
library(dplyr)
employ.data %>% mutate_at(abc, trimws)
# employee salary startdate
#1 John Doe 21000 2010-11-01
#2 Peter Gynn 23400 2008-03-25
#3 Jolie Hope 26800 2007-03-14
或者你可以直接做,如果你只有一列
employ.data[[abc]] <- trimws(employ.data[[abc]])
如果有多个列你可以使用lapply
employ.data[abc] <- lapply(employ.data[abc], trimws)
您还可以在 tidyverse 中使用 stringr
中的 str_trim
。
employ.data %>%
mutate(abc = str_trim(employee))
即:
employee salary startdate abc
1 John Doe 21000 2010-11-01 John Doe
2 Peter Gynn 23400 2008-03-25 Peter Gynn
3 Jolie Hope 26800 2007-03-14 Jolie Hope