創建組變量我每天觀察約200美國公司過去20年間的數據集。我想構建每天一組變量取值1-10,這取決於例如公司的規模。我使用data.table和函數ntile(size,10)來創建組。隨着時間的推移data.table
我試圖
DT[,decile:=(ntile(size,10)),by=date]
,但沒有奏效。 DT
是我data.table,其包括變量日期,大小,價格,companyid等
創建組變量我每天觀察約200美國公司過去20年間的數據集。我想構建每天一組變量取值1-10,這取決於例如公司的規模。我使用data.table和函數ntile(size,10)來創建組。隨着時間的推移data.table
我試圖
DT[,decile:=(ntile(size,10)),by=date]
,但沒有奏效。 DT
是我data.table,其包括變量日期,大小,價格,companyid等
這是一個簡單的玩具例如:DT = data.table(name=c("A","A","A","A","B","B","B","B","C","C","C","C","D","D","D","D"), date=1:4, size=c(100, 101, 103, 102, 50, 51, 50 ,49, 200, 201, 202, 205, 95, 96, 98, 110)) DT[,decile:=(ntile(size,2)),by=date]
使用稍大示例數據集,我可以構建一組變量如下:
# sample data
DT = data.table(
firm= rep(LETTERS, each = 20),
date = 1:20,
size = sample(1:250, length(LETTERS) * 20, replace = TRUE))
# sort and assign group rank
setkey(DT, date, size)
DT[, grouprank := (1:.N) %/% 10L, by = date]
這將一個尺寸組等級分配給每個單獨的日期每個企業,如可以從結果的單個日期的一個子集可以看出:
DT[date == 1]
firm date size grouprank
1: J 1 15 0
2: L 1 37 0
3: K 1 57 0
4: Q 1 64 0
5: R 1 64 0
6: C 1 81 0
7: E 1 86 0
8: I 1 106 0
9: O 1 117 0
10: B 1 118 1
11: X 1 119 1
12: A 1 135 1
13: H 1 138 1
14: D 1 140 1
15: F 1 162 1
16: N 1 171 1
17: M 1 178 1
18: S 1 178 1
19: T 1 181 1
20: G 1 188 2
21: Y 1 196 2
22: P 1 204 2
23: W 1 205 2
24: V 1 244 2
25: Z 1 245 2
26: U 1 247 2
firm date size grouprank
什麼沒有完全工作?結果不符合預期嗎?有錯誤嗎? – emilliman5
你能張貼一些樣本數據嗎? –
與一些模擬數據可再現例子將是有益的 – Megatron