我有一个数据框如下。每个ID
在不同时间点记录的Status
。 0 表示该人还活着,1 表示该人已死亡。
ID Status
1 0
1 0
1 1
2 0
2 0
2 0
3 0
3 0
3 0
3 1
我想打乱Status
列,并且每个ID的状态可以为1,仅一次。之后,我希望其他行有 NA
。例如,我希望我的数据框在改组后如下所示:
ID Status
1 0
1 0
1 0
2 0
2 1
2 NA
3 0
3 1
3 NA
3 NA
最佳答案
从您发布的数据和示例输出来看,您似乎想要随机采样df$Status
,然后进行替换。要一步获得您想要的东西,您可以执行以下操作:
set.seed(3)
df$Status <- ave(sample(df$Status), df$ID, FUN = function(x) replace(x, which(cumsum(x)>=1)[-1], NA))
df
# ID Status
#1 1 0
#2 1 0
#3 1 0
#4 2 1
#5 2 NA
#6 2 NA
#7 3 0
#8 3 0
#9 3 1
#10 3 NA
关于r - 在R中的数据框中进行列洗牌后删除不必要的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49544325/