我正在try 对我的数据帧进行分组,并将每组中一列的最后N个值设置为NA.对于N=1,我可以这样做:

df %>% group_by(ID) %>% mutate(target = c(target[-n()], NA))

但我很难让它对任何N个人起作用

这是我目前的try :

df %>% group_by(ID) %>% mutate(target = c(target[1:(abs(n()-1))], NA))

但对于规模为1的群体来说,这似乎是失败的

我还试过:

df %>% group_by(ID) %>% mutate(target = ifelse(n()==1, target, c(target[1:(abs(n()-1))], NA)))

但Else条款永远不会生效.

任何建议都将不胜感激,谢谢.

推荐答案

我们可以利用

library(dplyr)
df %>% 
   group_by(ID) %>%
   mutate(target = replace(target, tail(row_number(), N), NA))

R相关问答推荐

R dðr按时间间隔进行总结

如何计算新变量中的通货inflating 率?

如何在球体上绘制轮廓线?

在边界外添加注释或标题

如何在ggplot 2线性图的每个方面显示每个组的误差条?

基于现有类创建类的打印方法(即,打印tibles更长时间)

R:更新后无法运行控制台

编辑文件后编辑RhandsonTable

在特定Quarto(reveal.js)幻灯片上隐藏徽标

S用事件解决物质平衡问题

提取具有连续零值的行,如果它们前面有R中的有效值

未识别时区

如何调整曲线图中的y轴标签?

条形图和在Ploly中悬停的问题

从一个列表的框架中移除列表包装器

仅 Select 超过9行的CSV文件

在保留列表元素属性的同时替换列表元素

按组和连续id计算日期差

长/纬点继续在堪萨斯-SF结束,整齐的人口普查

使用函数从R中的列中删除标高