【问题标题】:Create NAs for first two rows using group_by使用 group_by 为前两行创建 NA
【发布时间】:2017-05-01 09:57:09
【问题描述】:

我正在尝试用 NA 替换我的观察结果。对于由给定 ID 表示的每个组,我只想替换前两个观察值的 NA。

所以来自:

      id          b
1     1  0.1125294
2     1 -0.6871102
3     1  0.1721639
4     2  0.2714921
5     2  0.1012665
6     2 -0.3538989

获取:

      id          b
1     1  NA
2     1  NA
3     1  0.1721639
4     2  NA
5     2  NA
6     2 -0.3538989

试过了,还是不行……

data<- data %>% group_by(id) %>% mutate(data$b[1:2] = NA)

感谢您的帮助!

【问题讨论】:

  • 使用replace...类似于mutate(b = replace(b, head(b, 2), NA)。还要记住,你不应该在管道中使用data$

标签: r dplyr


【解决方案1】:
library(dplyr)
df <- data.frame(id = rep(1:2, each = 3), value = rnorm(6))
df %>% group_by(id) %>% mutate(value=replace(value, 1:2, NA))

【讨论】:

  • 您在解决方案中在哪里使用bindr
  • 我不知道。但会不会是replace() 依赖它?我在安装之前遇到了错误。
  • 不...很可能您的会话有问题...执行gc(),然后再试一次...
  • 对。它可以在没有bindr 的情况下工作。我删除了包并开始了一个新会话,它正在工作。
猜你喜欢
  • 2018-07-24
  • 2019-03-19
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-31
  • 1970-01-01
相关资源
最近更新 更多