這個問題是關係到Identify unique levels of categorical variable重複的值出現創造標誌
之前,我有一個數據集如下:
clear
input int(id date) str8 druggroup
1001 18401 "loop"
1001 18414 "loop"
1001 18428 "loop"
1001 18462 "loop"
1001 18428 "CCB"
1001 18462 "arb"
1002 18401 "arb"
1002 18473 "arb"
1002 18414 "thiazide"
1002 18428 "thiazide"
1002 18428 "CCB"
1002 18466 "CCB"
end
format %td date
我想創建一個包含了我有最早日期的新變量每個id使用三個獨立的藥物組的證據。
定義「三證」的規則是我想要再次出現藥物組1的重複證據,並且還要出現藥物組2和3的出現。換句話說,藥物組1顯然會出現一次,在第一行,但我希望它再次發生。藥物組2和3不需要重複發生,但它們都必須發生。
我到目前爲止寫的代碼沒有考慮到第一次出現的藥物在第一次出現後需要再次出現纔算作重複使用的證據。
這裏是我的代碼至今:
bysort id druggroup (date) : gen firstdate = date[1]
format firstdate %td
list
egen group = group(id firstdate druggroup)
bysort id (group date druggroup): gen count_1 = sum(group != group[_n-1])
replace firstdate=date[2] if count_1==1
list
by id: gen start_date=firstdate if count_1==3
format start_date %td
by id : egen start_d=max(start_date)
format start_d %td
list
這是我真正想要的:
clear
input int(id date) str8 druggroup float(firstdate group count_1 start_date start_d)
1001 18401 "loop" 18414 1 1 . 18462
1001 18414 "loop" 18414 1 1 . 18462
1001 18428 "CCB" 18428 2 2 . 18462
1001 18428 "loop" 18414 1 1 . 18462
1001 18462 "loop" 18414 1 1 . 18462
1001 18462 "arb" 18462 3 3 18462 18462
1002 18401 "arb" 18414 4 1 . 18473
1002 18414 "thiazide" 18414 5 2 . 18473
1002 18428 "CCB" 18428 6 3 . 18473
1002 18428 "thiazide" 18414 5 2 . 18473
1002 18466 "CCB" 18428 6 3 . 18473
1002 18473 "arb" 18414 4 1 18473 18473
end
format %td date
format %td firstdate
format %td start_date
format %td start_d
不幸的是有些druggroups做同一天發生。看到我的問題在下面。 – user2363642
答案可以在線程中隨機更改位置並響應投票,因此對「上方」和「下方」的引用的用途有限。在寫這篇文章的時候,我想你是指在你的**答案**的評論中提到一個查詢,當前在這個答案之上。 –