Обрезать начальные / конечные пробелы из столбца фрейма данных, где имя столбца является переменной - PullRequest
0 голосов
/ 04 мая 2019

У меня есть фрейм данных, в котором имя столбца, который должен быть обрезан для пробелов, переносится как переменная, и я не могу разрешить переменную, чтобы указать мне столбец, чтобы его можно было обрезать.

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 - это имя переменной столбца.

INITIAL DATAFRAME

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 ]

2 голосов
/ 04 мая 2019

Вы можете также использовать 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
2 голосов
/ 04 мая 2019

Использование 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)
...