我想按组将值替换为NA.

have <- data.frame(id = c(1,1,1,1,2,2,2),
                   value = c(1,2,3,4,5,6,7))

want1 <- data.frame(id = c(1,1,1,1,2,2,2),
                    value = c(1,2,3,NA,5,6,NA))

want2 <- data.frame(id = c(1,1,1,1,2,2,2),
                    value = c(1,2,NA,NA,5,NA,NA))

want1对应于用NA替换最后一个OB值,want2对应于替换最后一个OB值;最后第二个值为NA.我目前正在try 使用dplyr软件包,但似乎无法获得任何牵引力.任何帮助都将不胜感激.谢谢

推荐答案

我们可以使用row_number()来测试当前行与组中总行的n().

have |>
  group_by(id) |>
  mutate(
    last1 = ifelse(row_number() == n(), NA, value),
    last2 = ifelse(row_number() >= n() - 1, NA, value)
  )
# # A tibble: 7 × 4
# # Groups:   id [2]
#      id value last1 last2
#   <dbl> <dbl> <dbl> <dbl>
# 1     1     1     1     1
# 2     1     2     2     2
# 3     1     3     3    NA
# 4     1     4    NA    NA
# 5     2     5     5     5
# 6     2     6     6    NA
# 7     2     7    NA    NA

R相关问答推荐

在ggplot的注释表格中突出显示最大值

带有gplot 2的十字舱口

对lme 4对象运行summary()时出错(diag中的错误(from,names = RST):对象unpackedMatrix_diag_get找不到)

有没有一种方法可以从函数中创建一个值的列表,然后将这些值变成R中的直方图?我一直觉得不行

selectInput不返回ALL,并将因子转换为shiny 的数字

用黄土法确定区间

将嵌套列表子集化为嵌套列表

如何在R中对深度嵌套的tibbles中的非空连续行求和?

IMF IFS数据以R表示

汇总数据表中两个特定列条目的值

合并DFS列表并将索引提取为新列

提取第一个下划线和最后一个下划线之间的任何内容,例外情况除外

矩阵的堆叠条形图,条形图上有数字作为标签

有效识别长载体中的高/低命中

按多列统计频次

有没有一种方法可以同时对rhandsontable进行排序和从rhandsontable中删除?

从多层嵌套列表构建Tibble?

创建列并对大型数据集中的特定条件进行成对比较的更高效程序

使用ifElse语句在ggploy中设置aes y值

有没有办法更改ggplot2中第二个y轴的比例限制?