2017-11-01 4 views
5

이미 몇 가지 예를 살펴 보았지만 필터링 된 사용 가능 값 &은 찾지 못했습니다. spread() ID를 기반으로하는 데이터 프레임 및 다른 열의 값

Date <-c('3/13/2017 6:21', '3/20/2017 6:28','3/13/2017 6:22','3/20/2017 6:28',' 3/13/2017 6:23','3/20/2017 6:28','3/13/2017 6:24',' 3/20/2017 6:28', ' 3/24/2017 6:28') 
Enabled_value<-c(0,1,0,1,0,1,0,1,0) 
Helper<-c('39RTU1','39RTU1','39RTU2','39RTU2','39RTU2','39RTU3','39RTU3','39RTU4','39RTU4', '39RTU4') 

는 다음과 같다하기 : 당신이 볼 수 있듯이, 나는 각 관측을위한 타임 스탬프가

Helper  Date(Enabled Value =0)  Date (Enabled Value =1) 
39RTU1  3/13/2017 6:20   3/20/2017 6:28 
39RTU2  3/13/2017 6:21   3/20/2017 6:28 
39RTU3  3/13/2017 6:22   3/20/2017 6:28 
39RTU4  3/13/2017 6:24   3/20/2017 6:28 
39RTU4  3/24/2017 6:28 

- 각 행은 즉 0에서 1로 Enabled_value에서 이동 (인스턴스해야한다, 그리고 마지막 경우 (아래 39RTU4 참조) 단위 Enabled_value = 0, 새로운 라인이 있어야한다.

I가 이미 데이터 세트 (500K에서 행을 2000 ~ 3000) 환원 광범위한 연구를 수행 하였다.

tidyrdplyr을 사용하려고하는데 내 spread은 오류를 계속 발생시킵니다.

> sorted_data1<-spread(sorted_data,Enabled_Value,Helper) 
Error: Duplicate identifiers for rows (1340, 1342) 
+0

난 당신이'mutate_at (Enabled_value를 추가 할 경우이 질문으로, https://stackoverflow.com/questions/47043098/transpose-columns-group-by-time-and-customer-id – markdly

답변

3

확산하려는 방식에 따라 행이 고유하게 식별되지 않는 것처럼 보입니다. 따라서 먼저 도우미에 의해 색인을 계산하고 값을 사용하십시오. (다른 하나는 길이가 9인데 반해 하나는 길이가 10 이었기 때문에 예제 데이터가 약간 변경되었습니다.)

이 정보가 도움이되기를 바랍니다. 이것이 원하지 않는다면 더 명확하게 설명하십시오.

Date <-c('3/13/2017 6:21', '3/20/2017 6:28','3/13/2017 6:22','3/20/2017 6:28',' 3/13/2017 6:23','3/20/2017 6:28','3/13/2017 6:24',' 3/20/2017 6:28', ' 3/24/2017 6:28') 
Enabled_value<-c(0,1,0,1,0,1,0,1,0) 
Helper<-c('39RTU1','39RTU1','39RTU2','39RTU2','39RTU2','39RTU3','39RTU3','39RTU4','39RTU4') 

df <- tibble(Date, Enabled_value, Helper) 
df %>% 
    group_by(Helper, Enabled_value) %>% 
    mutate(count = 1:n()) %>% 
    spread(Enabled_value, Date) %>% 
    rename(Enabled_value_0 = `0`, 
     Enabled_value_1 = `1`) 

# A tibble: 5 x 4 
# Groups: Helper [4] 
    Helper count Enabled_value_0 Enabled_value_1 
* <chr> <int>   <chr>   <chr> 
1 39RTU1  1 3/13/2017 6:21 3/20/2017 6:28 
2 39RTU2  1 3/13/2017 6:22 3/20/2017 6:28 
3 39RTU2  2 3/13/2017 6:23   <NA> 
4 39RTU3  1 3/13/2017 6:24 3/20/2017 6:28 
5 39RTU4  1 3/24/2017 6:28 3/20/2017 6:28 
+0

에 관한 생각 .character)'파이프 라인의 시작 부분에 한 줄을 저장하고, 명확성과 수작업 이름을 바꾼다. –

+0

컬럼 이름은 그것 없이도 전송할 것이다. 방금 매뉴얼의 이름을 바꾸면 더 잘 매치됩니다 (그렇지 않으면 컬럼 이름은'0'과'1'이 될 것입니다). 나는 또한 이미 확산 전 각 숫자에 "Enabled_value_"를 붙여야하는 변이 안에 줄을 추가 할 수있었습니다. 실제로 수동으로 이름을 바꾸는 것이이 경우에 더 분명했지만 실제로 작동하는 것 같았습니다. –

+0

아, 죄송합니다. 너무 빨리 댓글을 달았습니다. –

관련 문제