2017-03-01 1 views
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 

같이하는 방법 : 나는 패키지 reshape2하고 코드를 사용하고있다

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 

나는 다음과 같습니다 데이터 프레임을 가지고

이는 id.vars 집합마다 변수 개수를 반환합니다.

는 또한 노력이 :

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 

이것은 내가 무엇을 찾고에 가까운하지만, 정보를 찾고 사용하기가 매우 어려울 것입니다 : 다음과 같습니다

wide <- dcast(df, state + city + x + y ~ value) 

.

내가 틀렸다고 말하지만 state, city, x, y의 각 중복 값에 대해 id 변수가 필요한 것 같습니다.

필자는 아래 에서처럼 중복 값에 번호를 매기는 열을 만들 수있는 것을 생각하거나 찾지 못했습니다.

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

+0

흠 그래도 손실 내가 뭔가를 놓친 것을 - 나는 그게 진짜 복제라고 생각하지 마라. 링크 된 질문은 순차적 인 i.ds를 만드는 것을 찾는 반면,이 질문은 주 및 도시별로 기존 ID의 목록을 묻습니다. 'library (data.table)'을 사용하면 여기에'dt [,. (z = list (z)), by =. (state, city, x, y)]'를 사용할 수 있습니다. – dww

+0

@dww - 문제 -'dat $ time <- ave (rownames (dat), dat [c ("state", "city", "x", "y")], FUN = seq_along); reshape (dat, idvar = c ("state", "city", "x", "y"), direction = "wide")'예를 들어 순차적 ID를 생성하면됩니다. – thelatemail

+0

도움을 주셔서 감사합니다! 나는 그것을 함께 조각 낼 수 있어야한다. – nhol

답변

1

dplyr를 사용하여 사용자가 사용할 수있는 옵션 인 경우 :

library(dplyr) 
df %>% 
    group_by(state,city, x, y) %>% 
    mutate(n = row_number()) %>% 
    spread(n, z, sep = '') 

참고 순서가

관련 문제