Stata:按条件连接字符串变量

Stata:按条件连接字符串变量,stata,Stata,我在下面的示例数据中创建了一个名为result的变量,如果下注是赢的,则显示“W”,如果下注是输的,则显示“L” 如何在逐行的基础上,按照每个用户名的时间戳的严格顺序将该变量与自身连接起来 clear input str16 username str40 betdate winnings player1 "12NOV2008:19:04:01" -10 player1 "12NOV2008:12:03:44" 50 player2 "07NOV2008:14:03:33" -50 player2

我在下面的示例数据中创建了一个名为result的变量,如果下注是赢的,则显示“W”,如果下注是输的,则显示“L”

如何在逐行的基础上,按照每个用户名的时间戳的严格顺序将该变量与自身连接起来

clear
input str16 username str40 betdate winnings
player1 "12NOV2008:19:04:01" -10
player1 "12NOV2008:12:03:44" 50
player2 "07NOV2008:14:03:33" -50
player2 "05NOV2008:09:00:00" -100
end

generate double timestamp=clock(betdate,"DMY hms") 
format timestamp %tc

cap drop result
generate result = "L"
replace result = "W" if (winnings >0)

cap drop resulthistory
generate resulthistory = ""
replace resulthistory = concat(resulthisory + result), by(USERNAME timestamp) 

读者应该注意,问题的最后一行是幻想语法;剩下的就行了

这可能就是你想要的。请注意,当您重新读取数据时,
捕获的变量将丢失

clear
input str16 username str40 betdate winnings
player1 "12NOV2008:19:04:01" -10
player1 "12NOV2008:12:03:44" 50
player2 "07NOV2008:14:03:33" -50
player2 "05NOV2008:09:00:00" -100
end

gen double timestamp=clock(betdate,"DMY hms") 
format timestamp %tc

gen result = cond(winnings > 0, "W", "L") 

bysort username (timestamp): gen resulthistory = result[1] 
by username : replace resulthistory = resulthistory[_n-1] + result if _n > 1 
by username : replace resulthistory = resulthistory[_N] 

list