修剪数据框列中的前导/后缀空格,列名作为变量出现

时间:2019-05-04 11:24:50

标签: r dataframe 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)

在这里,我尝试修剪employee列,并尝试使用dplyr:

employ.data %>% mutate(employee = trimws(employee)) 

有效。 但是,如果我说:

abc <- "employee"

然后      employ.data %>% mutate(abc= trimws(abc))

它不起作用。

我已尝试在此函数中使用get(abc),但这也不起作用。

我知道当abc是变量列名时,不能将employ.data$abc用作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

2 个答案:

答案 0 :(得分:2)

使用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)

答案 1 :(得分:2)

您还可以在tidyverse中使用str_trim中的stringr

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