如何提取Store Location经纬度、检查变量类型并处理Date变量?
Ames Liquor 数据集处理方案
1. 提取 Store Location 中的经纬度
Store Location 通常是形如 (纬度值, 经度值) 的字符串,用 stringr(属于tidyverse工具集)可以轻松提取:
# 先加载tidyverse包 library(tidyverse) # 提取纬度和经度并转为数值型 data <- data %>% mutate( latitude = str_extract(`Store Location`, "\\((-?\\d+\\.\\d+),") %>% str_remove("\\(") %>% as.numeric(), longitude = str_extract(`Store Location`, ",\\s*(-?\\d+\\.\\d+)\\)") %>% str_remove(",\\s*|\\)") %>% as.numeric() )
正则表达式说明:\\((-?\\d+\\.\\d+) 匹配括号开头后的带小数的数值(含负号),,\\s*(-?\\d+\\.\\d+)\\) 匹配逗号后、括号前的数值,最后清理多余字符转成数值型。
2. 检查变量类型
用以下两种方法快速查看所有变量的类型:
- 基础R函数
str():
str(data)
- tidyverse的
glimpse()(输出更紧凑直观):
glimpse(data)
运行后会列出每个变量的名称、类型及部分样本值。
3. 用lubridate处理Date变量
先加载lubridate包,然后转换日期格式并提取年、月、日:
library(lubridate) data <- data %>% mutate( # 转换为标准日期格式,自动识别YYYY-MM-DD格式;若格式不同,可改用parse_date_time() date_formatted = ymd(Date), # 提取年、月、日 year = year(date_formatted), month = month(date_formatted, label = TRUE), # label=TRUE返回月份名称(如Jan),FALSE返回数字 day = day(date_formatted) )
如果原Date字段格式不是YYYY-MM-DD,比如是MM/DD/YYYY,可替换为 mdy(Date);不确定格式的话,用 parse_date_time(Date, orders = c("mdy", "dmy", "ymd")) 自动匹配常见格式。
内容的提问来源于stack exchange,提问作者user20216460
相关产品推荐
相关产品推荐

