首页 > 解决方案 > R用NA替换第一个n列值

问题描述

我有两年内的大量股票数据。数据框按股票 ID 和日期排序,即首先我拥有一只股票的所有数据,然后是第二只股票的所有数据,依此类推。现在我想用 NA 替换每只股票的列中的前 29 个值(行)。有没有一种简单的方法可以做到这一点?

我曾尝试使用:

aggregate(column~stock_id, data = df, FUN = function(x){x[1:29] <- NA})

但它不起作用。

标签: r

解决方案


aggregate用于总结 - 你最终每组有 1 行。你想要相同的行数,所以aggregate不适合你。

我会使用dplyr

library(dplyr)
df %>% group_by(stock_id) %>%
  mutate(column = case_when(row_number() < 30 ~ NA_real_, TRUE ~ column))

推荐阅读