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
我在 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