gpt4 book ai didi

r - 在R中的数据框中进行列洗牌后删除不必要的行

转载 作者:行者123 更新时间:2023-12-04 11:38:29 24 4
gpt4 key购买 nike

我有一个数据框如下。每个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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com