Python 与R中的字符串替换代码等效?
我有以下代码,可以很好地从Python列表中的元素末尾删除字符:Python 与R中的字符串替换代码等效?,python,arrays,r,string,Python,Arrays,R,String,我有以下代码,可以很好地从Python列表中的元素末尾删除字符: x = ['01/01/2013 00:00:00','01/01/2013 00:00:00', '01/01/2013 00:00:00','01/01/2013 00:00:00',...] 假设是这个数组,我想删除00:00:00部分。所以,我写了这个: i = 0 while i < len(x): x[i] = x[i][:x[i].find(' 00:00:00')] i += 1
x = ['01/01/2013 00:00:00','01/01/2013 00:00:00',
'01/01/2013 00:00:00','01/01/2013 00:00:00',...]
假设是这个数组,我想删除00:00:00
部分。所以,我写了这个:
i = 0
while i < len(x):
x[i] = x[i][:x[i].find(' 00:00:00')]
i += 1
i=0
而i
这就成功了。如何在R中实现类似的解决方案?我尝试了substr
和gsub
,但它们运行得非常慢(实际列表中有超过250000个日期/时间组合)。试试看
x <- rep('01/01/2013 00:00:00', 250000)
system.time(y <- sub(" 00:00:00", "", x, fixed=TRUE))
# User System verstrichen
# 0.05 0.00 0.05
x试试看
x考虑一些示例数据:
set.seed(144)
dat <- sample(c("01/01/2013 00:00:00", "01/01/2013 12:34:56"), 200000, replace=T)
table(dat)
# dat
# 01/01/2013 00:00:00 01/01/2013 12:34:56
# 100100 99900
或者,对于这200000个日期/时间对,以下更紧凑的gsub
命令也会在大约0.15秒内运行:
cleaned <- gsub(" 00:00:00$", "", dat)
table(cleaned)
# cleaned
# 01/01/2013 01/01/2013 12:34:56
# 100100 99900
cleaned考虑一些示例数据:
set.seed(144)
dat <- sample(c("01/01/2013 00:00:00", "01/01/2013 12:34:56"), 200000, replace=T)
table(dat)
# dat
# 01/01/2013 00:00:00 01/01/2013 12:34:56
# 100100 99900
或者,对于这200000个日期/时间对,以下更紧凑的gsub
命令也会在大约0.15秒内运行:
cleaned <- gsub(" 00:00:00$", "", dat)
table(cleaned)
# cleaned
# 01/01/2013 01/01/2013 12:34:56
# 100100 99900
你只想要字符串还是解析到日期/时间如果你想要它作为一个实际的日期
对象,你可以使用作为.date(x,格式='%d/%m/%Y')
(或者如果它是月/日/年,我说不出来,'%m/%d/%Y'
),你只想要字符串还是解析到日期/时间如果你想要它作为一个实际的日期
对象,您可以使用作为.Date(x,格式='%d/%m/%Y')
(或者'%m/%d/%Y'
,如果是月/日/年,我不知道)。