从数据框列中去除前导/尾随空格,其中列名作为变量给出。

3

我有一个数据框,其中要去除空格的列的名称作为变量出现,我无法解析该变量以指向该列,因此无法进行修剪。

最初的回答:

您可以使用`df[column_name].str.strip()`来修剪列中的空格。如果您的列名存储在一个变量中,则可以使用以下代码:

`df[column_variable].str.strip()`

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:

这里我尝试使用dplyr来裁剪employee列:

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

1
可能是如何使用dplyr编程语法创建和评估变量名称的重复问题。 - NelsonGon
2个回答

7

你也可以在tidyverse中使用stringrstr_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

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

如果只有一列,您也可以直接执行。"Original Answer"翻译成"最初的回答"。
employ.data[[abc]] <- trimws(employ.data[[abc]])

如果有多列,您可以使用lapply。最初的回答。
employ.data[abc] <- lapply(employ.data[abc], trimws)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接