首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R将前n列值替换为NA

R将前n列值替换为NA
EN

Stack Overflow用户
提问于 2021-04-06 21:57:15
回答 2查看 38关注 0票数 0

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

我试着使用:

代码语言:javascript
复制
aggregate(column~stock_id, data = df, FUN = function(x){x[1:29] <- NA})

但它不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-06 22:05:17

aggregate是用于汇总的--每组只有1行。您想要相同的行数,所以aggregate不适合您。

我会使用dplyr

代码语言:javascript
复制
library(dplyr)
df %>% group_by(stock_id) %>%
  mutate(column = case_when(row_number() < 30 ~ NA_real_, TRUE ~ column))
票数 2
EN

Stack Overflow用户

发布于 2021-04-06 23:44:02

base R中,我们可以使用ave

代码语言:javascript
复制
i1 <- with(df, ave(seq_along(stock_id), stock_id, FUN = seq_along) < 30)
df[i1, setdiff(names(df), 'stock_id)] <- NA
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66970080

复制
相关文章

相似问题

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