我是靠谱客的博主 单身小伙,最近开发中收集的这篇文章主要介绍java动态计算_在动态范围内计算观察值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题并不完全清楚 .

考虑具有两个不同结果的以下数据: num2 和 num3 :

+-----------------------------------------+

| date2 group treat num2 num3 |

|-----------------------------------------|

| 01feb2000 1 1 3 2 |

| 01jun2000 1 0 . . |

| 01sep2000 1 0 . . |

| 01nov2000 1 1 0 0 |

| 01may2002 1 0 . . |

| 01jan2010 1 1 1 1 |

| 01may2010 1 0 . . |

|-----------------------------------------|

| 01jan2001 2 1 0 0 |

| 01mar2002 2 1 0 0 |

+-----------------------------------------+

变量 num2 的计算假设您有兴趣计算经过处理的观察( treat == 1 )后一年内的观察结果,这些观察结果等于0或1表示 treat . 例如,在01feb2000之后,有三个观察符合时间 Span 条件;两个有 treat==0 ,一个有 treat == 1 ,它们都被计算在内 .

变量 num3 也计算在经过处理的观察后一年内的观察结果,但仅计算 treat == 0 的情况 .

num2 是根据您引用的文章的精神使用代码计算的 . 使用 in 可以提高运行效率,并且没有 gsort (如代码中所示),这非常慢 . 我假设每个_1266191都没有重复的日期:

clear

set more off

input ///

group str15 date count treat num

1 01.02.2000 1 1 2

1 01.06.2000 2 0 .

1 01.09.2000 3 0 .

1 01.11.2000 3 1 .

1 01.05.2002 4 0 .

1 01.01.2010 5 1 1

1 01.05.2010 6 0 .

2 01.01.2001 1 1 0

2 01.03.2002 2 1 0

end

list

gen date2 = date(date,"DMY")

format date2 %td

drop date count num

order date

list, sepby(group)

*----- what you want -----

gen num2 = .

isid group date, sort

forvalues j = 1/`=_N' {

count in `j'/L if inrange(date2 - date2[`j'], 1, 365) & group == group[`j']

replace num2 = r(N) in `j'

}

replace num2 = . if !treat

list, sepby(group)

num3 的计算代码与@jfeigenbaum发布的精神(和结果)相似:

*----- what you want -----

isid group date, sort

by group: gen indicat = sum(treat)

sort group indicat, stable

by group indicat: egen num3 = total(inrange(date2 - date2[1], 1, 365))

replace num3 = . if !treat

list, sepby(group)

你的问题可能有两种以上的解释,但我会留下它 .

(请注意,我已将您的示例数据更改为包含可能使问题更加真实的案例 . )

最后

以上就是单身小伙为你收集整理的java动态计算_在动态范围内计算观察值的全部内容,希望文章能够帮你解决java动态计算_在动态范围内计算观察值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部