我觉得这应该很简单,但是我还是不知所措,希望你们能帮助。我的面板数据按照id
分类,并且包含变量,这里只有一个v1
:
id v1
A 14
A 15
B 12
B 13
B 14
C 11
C 12
C 13
D 14
我想要创建一个哑变量,指示v1
的值(比如12
)是否存在于id
面板中。希望类似于以下形式:
id v1 v2
A 14 0
A 15 0
B 12 1
B 13 1
B 14 1
C 11 1
C 12 1
C 13 1
D 14 0
我觉得这应该很简单,但是无法想出一个简单的一行解决方案。
非常感谢!
library(data.table)
中的setDT(df)[, v2 := any(v1 ==12)+0L, id]
或者使用ave
。 - akrun+0L
比使用as.integer
更快,还是只是更简洁? - MichaelChirico+0L
与as.numeric
,它们在速度方面应该是相当等效的。 - Steven Beaupréas.integer
胜出,但在长度为10000的向量的微秒级别上。 - MichaelChirico