gpt4 book ai didi

r - 如何在 R 中的两个因素之间填充值?

转载 作者:行者123 更新时间:2023-12-02 08:20:07 27 4
gpt4 key购买 nike

如何在“开始”和“结束”指示符之间用 1 填充“持续时间”列,如下例所示?

在 Stata 中会是:

by id (year), sort: gen duration=1 if start==1
by id (year), sort: replace duration=1 if duration[_n-1]==1 & end!=1

我如何在 R 中执行此操作,可能使用 Dplyr?

id  year    start   end 
1 2000 0 0
1 2001 1 0
1 2002 0 0
1 2003 0 1
1 2004 0 0
2 2000 0 0
2 2001 0 0
2 2002 1 0
2 2003 0 0
2 2004 0 1

输出将是:

id  year    start   end duration
1 2000 0 0 0
1 2001 1 0 1
1 2002 0 0 1
1 2003 0 1 0
1 2004 0 0 0
2 2000 0 0 0
2 2001 0 0 0
2 2002 1 0 1
2 2003 0 0 1
2 2004 0 1 0

最佳答案

使用 dplyr,这似乎可以解决问题。一、样本数据

dd<-read.table(text="id  year    start   end 
1 2000 0 0
1 2001 1 0
1 2002 0 0
1 2003 0 1
1 2004 0 0
2 2000 0 0
2 2001 0 0
2 2002 1 0
2 2003 0 0
2 2004 0 1", header=T)

现在我们只是按 ID 分组,然后我们使用 cumsum 来查找开始和结束的变化

library(dplyr)
dd %>% group_by(id) %>% mutate(duration = cumsum(start-end))

# id year start end duration
# (int) (int) (int) (int) (int)
# 1 1 2000 0 0 0
# 2 1 2001 1 0 1
# 3 1 2002 0 0 1
# 4 1 2003 0 1 0
# 5 1 2004 0 0 0
# 6 2 2000 0 0 0
# 7 2 2001 0 0 0
# 8 2 2002 1 0 1
# 9 2 2003 0 0 1
# 10 2 2004 0 1 0

关于r - 如何在 R 中的两个因素之间填充值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38001760/

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