在 R 中用空格对不同长度的字符串进行子集化
Subsetting different length strings by spaces in R
在 R 中,我目前有一个保存为字符串的长日期和时间向量。因此,根据给定的日期,字符串的长度可以是 16、17 或 18 个字符,因此我不能只对字符串中的前 8 或 10 个字符进行子集化,因为这不适用于每个日期。但是由于日期和时间值之间有一个 space,我想知道如何对这个字符串进行子集化,以便我只获取 space 之前的字符?
为了展示字符串现在的样子,这里有几个例子:
- "4/18/1950 0:00:00"
- "6/8/1951 0:00:00"
- "11/15/1951 0:00:00"
我不确定您是否熟悉正则表达式,如果不熟悉,您应该学习一下,因为它们非常有用:
tutorial
正如 akrun 指出的那样,您可以使用 "sub" 命令删除 space 及其后的所有内容,如下所示:
sub(" .*","",stringVar)
- 第一个参数是匹配 space 和后面所有内容的正则表达式代码。
- 第二个参数是你想要替换匹配项的内容,在本例中为空
- 第三个参数是输入字符串
或者,您可以使用 "strsplit"
在 space 和 select 的前半部分拆分字符串
strsplit(stringVar," ")[1]
在 R 中,我目前有一个保存为字符串的长日期和时间向量。因此,根据给定的日期,字符串的长度可以是 16、17 或 18 个字符,因此我不能只对字符串中的前 8 或 10 个字符进行子集化,因为这不适用于每个日期。但是由于日期和时间值之间有一个 space,我想知道如何对这个字符串进行子集化,以便我只获取 space 之前的字符?
为了展示字符串现在的样子,这里有几个例子:
- "4/18/1950 0:00:00"
- "6/8/1951 0:00:00"
- "11/15/1951 0:00:00"
我不确定您是否熟悉正则表达式,如果不熟悉,您应该学习一下,因为它们非常有用: tutorial
正如 akrun 指出的那样,您可以使用 "sub" 命令删除 space 及其后的所有内容,如下所示:
sub(" .*","",stringVar)
- 第一个参数是匹配 space 和后面所有内容的正则表达式代码。
- 第二个参数是你想要替换匹配项的内容,在本例中为空
- 第三个参数是输入字符串
或者,您可以使用 "strsplit"
在 space 和 select 的前半部分拆分字符串strsplit(stringVar," ")[1]