R从列中的一系列行中删除字符串字符

R Remove string characters from a range of rows in a column

我在 dataset 中有一个 column,我想从其中删除行中的前两个字符。现在,并不是所有的行都有这些字符,所以我不想更改这些行,有些行是 empty.

如何替换行中的字符以及删除空行而不影响不需要任何修改的行?

请注意原始数据集有 305 行。

示例数据

    Date = c("AA 1/27/2020",
             "BB 1/29/2020",
             "CC 1/30/2020",
             "DD 2/1/2020",
             "2/9/2020",
             "2/15/2020",
             " ",
             " ",
             "EE 2/16/2020",
             "VV 2/17/2020",
             "2/18/2020",
             "2/22/2020",
             "2/25/2020",
             "2/28/2020") 

Date_Approved = c("1/28/2020",
             "1/30/2020",
             "1/31/2020",
             "2/2/2020",
             "2/10/2020",
             "2/16/2020",
             "2/17/2020",
             "2/18/2020",
             "2/17/2020",
             "2/19/2020",
             "2/20/2020",
             "2/23/2020",
             "2/26/2020",
             "2/29/2020") 

代码

    library(tidyverse)
    
   df = data.frame(Date, Date_Approved)

    # Normally I would use
    # Remove Acronyms from date.received column
    df = Date %>% 
             mutate(Date_New= str_sub(Date[], 3, -1))
          

如果我们想要子字符串和过滤,一个选项是使用 trimws(默认情况下删除字符串两端的空白字符 - 如果我们只想要左边或右边,请指定 which 默认为 'both'),whitespace 作为正则表达式,即匹配零个或多个大写字母后跟零个或多个空格 ([A-Z]*\s*),然后 filter元素不为空的行

library(dplyr)
df %>% 
  mutate(Date = trimws(Date, whitespace = "[A-Z]*\s*")) %>% 
  filter(nzchar(Date))

-输出

       Date Date_Approved
1  1/27/2020     1/28/2020
2  1/29/2020     1/30/2020
3  1/30/2020     1/31/2020
4   2/1/2020      2/2/2020
5   2/9/2020     2/10/2020
6  2/15/2020     2/16/2020
7  2/16/2020     2/17/2020
8  2/17/2020     2/19/2020
9  2/18/2020     2/20/2020
10 2/22/2020     2/23/2020
11 2/25/2020     2/26/2020
12 2/28/2020     2/29/2020