我正在尝试从数据框中的列中提取前几个字符。我需要的是前几个字符,直到遇到“,”。
数据:
texts
12/5/15, 11:49 - thanks, take care
12/5/15, 11:51 - cool
我需要的是
texts date
12/5/15, 11:49 - thanks, take care 12/5/15
12/10/15, 11:51 - cool 12/10/15
我厌倦了使用它,但这返回了没有列的所有内容
df$date <- sub(", ", "", df$date, fixed = TRUE)
and
df$date <- gsub( ".,","", df$texts)
Excel 等价物
=LEFT(A1, FIND(",",A1,1)-1)
最佳答案
您可以使用 sub
:
sub('(^.*?),.*', '\\1', df$texts)
# [1] "12/5/15" "12/5/15"
模式匹配
^
后跟任意字符 .
重复零到无穷次,但尽可能少 *?
,全部捕获 ( ... )
,
.*
这将匹配整行,并将其替换为
\\1
。 其他选项:
substr
、 strsplit
、 stringr::str_extract
。如果您打算使用上述日期,
as.Date
(或 strptime
,如果您也想要时间)实际上可以去掉它需要的内容:as.Date(df$texts, '%m/%d/%y')` # or '%d/%m/%y', if that's the format
# [1] "2015-12-05" "2015-12-05"
数据:
df <- structure(list(texts = structure(1:2, .Label = c("12/5/15, 11:49 - thanks, take care",
"12/5/15, 11:51 - cool"), class = "factor")), .Names = "texts",
class = "data.frame", row.names = c(NA, -2L))
关于regex - R 中 LEFT 加 FIND 函数的等价物是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36215022/