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

如何基于列名创建新dataframe?及提取TSLA数据日期至新dataframe的方法

嘿,我来帮你搞定这两个DataFrame处理的问题,都是日常数据分析里的常见场景,咱们一步步来:

1. 如何基于列名创建新的DataFrame?

不管你用基础R还是tidyverse工具,都有直观好用的方法:

  • 基础R写法:直接指定要保留的列名即可。假设你的原始数据叫my_data,想保留"Date"和"Close"这两列,代码如下:
    new_df <- my_data[, c("Date", "Close")]
    
    如果是要排除某些列,比如替代你提到的my.data[,-(2:6)],也可以用列名精准排除:
    new_df <- my_data[, !colnames(my_data) %in% c("Open", "High", "Low", "Volume", "Adj.Close")]
    
  • tidyverse(dplyr)写法:用select()函数更灵活易读,适合复杂的列选择逻辑:
    library(dplyr)
    # 保留指定列
    new_df <- my_data %>% select(Date, Close)
    # 排除指定列
    new_df <- my_data %>% select(-Open, -High, -Low, -Volume, -Adj.Close)
    
2. 提取TSLA数据的日期并创建带日期的新DataFrame

你说用my.data[,1]得到的是3.8、5.15这类数值,这说明日期其实是你的数据框的行名(rownames),而不是第一列!这是金融数据导入时的常见情况,解决步骤如下:

第一步:把行名转成正式的日期列

先用基础R的方法快速转换:

# 给数据框新增一列Date,值就是原来的行名
my_data$Date <- rownames(my_data)
# 清空原来的行名,让数据结构更规范
rownames(my_data) <- NULL

如果用tidyverse的话,rownames_to_column()函数一步到位:

library(tidyverse)
my_data <- my_data %>% rownames_to_column(var = "Date")

第二步:创建包含日期和目标数值的新DataFrame

现在Date已经是正式列了,就可以像第一个问题那样选择列:

# 假设你要保留Date和Close列(对应你示例里的5.00、6.08这些数值)
new_df <- my_data[, c("Date", "Close")]
# 或者用dplyr的链式写法
new_df <- my_data %>% select(Date, Close)

第三步:把日期转成日期格式(关键!方便绘图)

为了后续绘图时x轴能正确识别日期顺序,一定要把Date列转成日期类型:

new_df$Date <- as.Date(new_df$Date)
# 用dplyr可以把所有操作串起来
new_df <- my_data %>% 
  rownames_to_column(var = "Date") %>% 
  select(Date, Close) %>% 
  mutate(Date = as.Date(Date))

这样处理完后,你的新DataFrame就会是你想要的格式:

DateClose
2010-06-295.00
2010-06-306.08
2010-07-015.18

之后绘图时直接用Date作为x轴、Close作为y轴就完全没问题啦!


内容的提问来源于stack exchange,提问作者Ole Solheim Salvesen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:32:49