2017-12-19 25 views
0

내가 바꿀 필요가있는 데이터 프레임에 문제가 있습니다.R - 틀린 오류 메시지 - 오류 : 중복 식별자 행

나는이 명령이 :

library(tidyverse) 
df1 = df1 %>% gather(Day, value, Day01:Day31) %>% spread(Station, value) 

을 그리고 난이 오류를 얻을 :

library(dplyr) 
test = rownames_to_column(df1, "VALUE") 
length(unique(test$VALUE)) ### Result 258180 = Same as number of rows 
length(unique(test$VALUE)) == nrow(test) #### Result TRUE 

보시다시피 :

Error: Duplicate identifiers for rows (130933, 131029), (389113, 389209), (647293, 647389), (905473, 905569), (1163653, 1163749), (1421833, 1421929), (1680013, 1680109), (1938193, 1938289), (2196373, 2196469), (2454553, 2454649), (2712733, 2712829), (2970913, 2971009), (3229093, 3229189), (3487273, 3487369), (3745453, 3745549), (4003633, 4003729), (4261813, 4261909), (4519993, 4520089), (4778173, 4778269), (5036353, 5036449), (5294533, 5294629), (5552713, 5552809), (5810893, 5810989), (6069073, 6069169), (6327253, 6327349), (6585433, 6585529), (6843613, 6843709), (7101793, 7101889), (7359973, 7360069), (7618153, 7618249), (7876333, 7876429), (130934, 131030), (389114, 389210), (647294, 647390), (905474, 905570), (1163654, 1163750), (1421834, 1421930), (1680014, 1680110), (1938194, 1938290), (2196374, 2196470), (2454554, 2454650), (2712734, 2712830), (2970914, 2971010), (3229094, 3229190), (3487274, 3487370), (3745454, 3745550), (4003634, 4003730), (4261814, 4261910), (4519994, 4520090 

이상한 것은 내가이 결과를 얻을 수 있다는 것입니다을 오류 메시지는 또한 내 데이터 프레임에도 존재하지 않는 행을 포함합니다.

명령은 동일한 구조를 1 : 1로 가지고있는 다른 모든 데이터 프레임에서도 정상적으로 작동합니다. 그들은 행이 적습니다.

데이터 프레임을 제공하는 방법을 잘 모릅니다. 대학에 업로드 했으므로 데이터 프레임을 다운로드 할 수 있습니다. 여기

링크 (I가 그렇게 게시 할 수 희망)

https://megastore.uni-augsburg.de/get/pmAS15z6TN/

+0

바람직하게는'dput'을 호출 한 결과를 게시하여 문제를 재현하는 데이터의 하위 집합을 게시해야합니다. – alistaire

답변

1

이 작동한다고합니다. 설명 된 바와 같이 spreadgather 다음에 더 이상 고유하게 식별되지 않는 행을 결합하려고하기 때문입니다. rowid_to_column은 행 ID를 열로 변환하는 간단한 함수입니다. 숫자가 원래 데이터 세트의 크기보다 큰 이유는 수집 한 후에 8003580 행의 데이터 프레임이 있기 때문입니다.

data2 <- data %>% 
    gather(Day, value, Day01:Day31) %>% 
    tibble::rowid_to_column() %>% 
    spread(Station, value) 

실제로 내 노트북에서이 작업을 수행하는 메모리 문제가 발생했습니다.

+0

고마워요! 나는 그것을 테스트했고 나는 또한 메모리 문제가있다. 나는 랩톱 만 가지고 있으며 지금까지도 여전히 문제를 해결할 수 있었다. 나는 지금 그것을 바탕 화면에서 시도 할 것이다. 하지만 적어도 이전과 같은 오류가 발생하지는 않습니다. – Essi