1
第一次發佈,主要是因爲我厭倦了將我的頭撞在牆上。創建一個ID來重塑數據集
在此感謝提前看。
我有一個看起來像這樣的數據幀:
state city x y z
1 OR Portland 8 10 1
2 OR Portland 8 10 4
3 OR Portland 8 10 10
4 NY New York 29 15 10
5 NY New York 29 15 18
6 NJ Trenton 8 10 50
7 NJ Trenton 8 10 60
8 NJ Trenton 8 10 70
9 WA Seattle 1 70 6
10 WA Seattle 1 70 7
11 WA Seattle 1 70 8
12 WA Seattle 1 70 9
13 WA Seattle 1 70 10
14 WA Seattle 1 70 11
我一直在試圖重塑它看起來像這樣:
state city x y z.1 z.2 z.3 z.4 z.5 z.6
OR Portland 8 10 1 4 10
NY New York 29 15 10 18
NJ Trenton 8 10 50 60 70
WA Seattle 1 70 6 7 8 9 10 11
我一直在使用包reshape2和代碼看起來像這樣:
df <- melt(data,id.vars = c("state","city","x","y"),measure.vars = "z")
wide <- dcast(df, state + city + x + y ~ variable)
它返回每個id.vars集的變量z的計數。
我也試過這樣:
wide <- dcast(df, state + city + x + y ~ value)
,看起來像這樣:
state city x y 1 4 6 7 etc...
OR Portland 8 10 1 1 0 0
NY New York 29 15 0 0 0 0
NJ Trenton 8 10 0 0 0 0
WA Seattle 1 70 0 0 1 1
這是接近我正在尋找,但將是非常困難用於查找信息。
如果我錯了,告訴我,但它看起來像我需要一個id變量爲狀態,城市,x,y的每個重複值。
我一直沒有想到或找到任何可以讓我創建列的數量,如下所示的重複值。
state city x y z num
1 OR Portland 8 10 1 1
2 OR Portland 8 10 4 2
3 OR Portland 8 10 10 3
4 NY New York 29 15 10 1
5 NY New York 29 15 18 2
6 NJ Trenton 8 10 50 1
7 NJ Trenton 8 10 60 2
8 NJ Trenton 8 10 70 3
9 WA Seattle 1 70 6 1
10 WA Seattle 1 70 7 2
11 WA Seattle 1 70 8 3
12 WA Seattle 1 70 9 4
13 WA Seattle 1 70 10 5
14 WA Seattle 1 70 11 6
我將不勝感激任何幫助或想法在哪裏尋找解決方案。
最佳,
-n
嗯,我失去的東西 - 我不認爲這是真的重複。鏈接的問題查找創建連續的i.ds,而這個請求按州和城市列出現有的ID。使用'library(data.table)',我們可以使用'dt [,。(z = list(z)),by =。(state,city,x,y)]' – dww
@dww - 它本質上是一樣的問題 - 'dat $ time < - ave(rownames(dat),dat [c(「state」,「city」,「x」,「y」)],FUN = seq_along);例如,重塑(dat,idvar = c(「state」,「city」,「x」,「y」),direction =「wide」)例如只需要創建一個順序id。 – thelatemail
感謝您的幫助!我應該可以將它拼湊在一起。 – nhol