首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中将日期与文本分开

在R中将日期与文本分开
EN

Stack Overflow用户
提问于 2017-08-16 05:59:01
回答 1查看 55关注 0票数 0

我有一个字符串向量,其中包括在某个站点收集的变量的开始和结束日期的重复模式。下面是第一个条目:

“1942-10-06,1996-03-31雪深(in/mm)1942-11-01,1996-03-31雪(in/mm)1942-10-01,1997-12-27 27Growing DaysHeating Degree DaysAverage Temperature (F/C)最高温度(F/C)1950-08-01,1970-03-31观测时间温度(F/C)1942-10-01,1997-12-27最低温度(F/C)1942-10-01,1996-03-31降水量(in/mm)”

有人可以帮我将每个字符串重新格式化为包含开始日期、结束日期和变量名称的表吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-16 08:37:32

下面的代码应该遵循一些关于数据格式化方式的假设:

  1. 开始日期的格式是"yyyy-mm-dd“或"yyyy-dd-mm”,后面跟一个逗号,
  2. 结束日期的格式与开始日期的格式相同,后面跟一个逗号,
  3. 变量名跟在结束日期后面,不包含数字。

正如Oriol Mirosa所暗示的那样,这些假设可能不成立。

代码语言:javascript
复制
# Your string
string = "1942-10-06,1996-03-31Snow Depth (in/mm)1942-11-01,1996-03-31Snowfall (in/mm)1942-10-01,1997-12-27Growing Degree DaysHeating Degree DaysAverage Temperature (F/C)Maximum Temperature (F/C)1950-08-01,1970-03-31Observation Time Temperature (F/C)1942-10-01,1997-12-27Minimum Temperature (F/C)1942-10-01,1996-03-31Precipitation (in/mm)"

# Extract text matching Assumptions 1-3, respectively, above
library(stringr) 
start_dates = str_extract_all(string, "[0-9]{4}-[0-9]{2}-[0-9]{2},")
end_dates = str_extract_all(string, ",[0-9]{4}-[0-9]{2}-[0-9]{2}")
var_names = str_extract_all(string, 
                           ",[0-9]{4}-[0-9]{2}-[0-9]{2}([^[0-9]])+")

# Remove the irrelevant bits (e.g., leading/trailing commas)
start_dates = as.Date(gsub(",", "", unlist(start_dates))) #remove ","
end_dates = as.Date(gsub(",", "", unlist(end_dates))) #remove ","
var_names = gsub(",[0-9]{4}-[0-9]{2}-[0-9]{2}", "", unlist(var_names))

# Put into table
X = data.frame("Start_date" = start_dates, 
               "End_date" = end_dates,
               "Var_name" = var_names)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45702186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档