You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用subset函数提取子集时如何将日期转为星期

解决方案

你可以通过嵌套transform函数和subset函数,在做子集提取的同时完成星期转换,不需要分两步操作。

方法1:纯base R实现(无需加载额外包)

直接用base自带的weekdays()函数转换日期为星期,代码如下:

# 若date列是字符型,先执行这一步转成日期格式
# Rversions$date <- as.Date(Rversions$date)

result <- transform(
  subset(Rversions, select = c(nickname, date), !is.na(nickname) & !is.na(date)),
  星期 = weekdays(date)
)

方法2:配合lubridate包自定义输出格式

如果你习惯用lubridate的wday函数,可以设置参数控制输出是缩写还是完整星期名:

library(lubridate)
result <- transform(
  subset(Rversions, select = c(nickname, date), !is.na(nickname) & !is.na(date)),
  星期 = wday(date, label = TRUE, abbr = FALSE) # abbr设为TRUE时输出星期缩写
)

可选:dplyr管道流写法

如果偏好管道流的写法,也可以用dplyr实现,逻辑更直观:

library(dplyr)
library(lubridate)

result <- Rversions %>%
  # 排除两个字段含NA的记录
  filter(!is.na(nickname), !is.na(date)) %>%
  # 提取需要的字段
  select(nickname, date) %>%
  # 新增星期列
  mutate(星期 = wday(date, label = TRUE, abbr = FALSE))

最终输出会在原有两列基础上新增星期列,示例效果如下:

nickname       date   星期
79             Great Pumpkin 2011-10-31 星期一
80       December Snowflakes 2011-12-22 星期四
81       Gift-Getting Season 2012-02-29 星期三
82             Easter Beagle 2012-03-30 星期五
83      Roasted Marshmallows 2012-06-22 星期五

内容的提问来源于stack exchange,提问作者SaltySenator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:45:02