2017-11-15 20 views
1

약 15,000 개의 행이있는 웹에서 가져온 데이터가 있습니다. 날짜 열에는 데이터의 '블록 섹션'시작 부분에 날짜가 있습니다. 약 25 %는 비어 있습니다. 따라서 2010 년 한 셀을 보유한 칼럼이고, 그런 다음 NA는 잠시 동안, 그리고 2010 년에 다시 나타납니다. 기본적으로 날짜는 같습니다. . . 그것이 바뀔 때까지. 나는 밖으로 날짜 변수를 뽑아했고 다음과 같은 코드에서 Date_from 소스 컬럼과 같다 : 나는 Date_tidy 컬럼에 Data_from_source 열을 코딩하는 방법에 붙어data_frame에서 거대한 공백을 정리하는 방법은 무엇입니까?

data_frame(
    Date_from_source = 
    c(2010,rep(NA,2),2010,rep(NA,2),2011,rep(NA,3),2011,rep(NA,2),2012), 
    Date_tidy = c(rep(2010,6),rep(2011,7),2012)) 

. group_by 및 lag 방식을 사용하여 시도했지만 휠을 돌리고 있습니다. 감사.

+0

보고 싶으세요 당신이 결과로 볼하려는 당신은 당신이 tidyr'을 찾고 될 수 – sorearm

+0

을 기대 출력의 예를 줄 수있는 것을 완전히 확인 :: fill' –

답변

2

당신은 tidyr::fill

library(tidyr) 
library(dplyr) 
df1 <- data_frame(
    Gender = sample(c('male','female'),14,T), 
    Date_from_source = 
    c(2010,rep(NA,2),2010,rep(NA,2),2011,rep(NA,3),2011,rep(NA,2),2012), 
    Date_tidy = c(rep(2010,6),rep(2011,7),2012)) 

df1 %>% group_by(Gender) %>% fill(Date_from_source) 

    # # A tibble: 14 x 3 
    # # Groups: Gender [2] 
    # Gender Date_from_source Date_tidy 
    # <chr>   <dbl>  <dbl> 
    # 1 female    NA  2010 
    # 2 female    2011  2011 
    # 3 female    2011  2011 
    # 4 female    2011  2011 
    # 5 female    2011  2011 
    # 6 male    2010  2010 
    # 7 male    2010  2010 
    # 8 male    2010  2010 
    # 9 male    2010  2010 
    # 10 male    2010  2010 
    # 11 male    2010  2011 
    # 12 male    2010  2011 
    # 13 male    2010  2011 
    # 14 male    2012  2012 
+0

그동안 샘플 데이터를 변경 했는데도 똑같이 작동해야합니다. 남아있는 나머지 NA는 이전에 아무 것도 없으므로 첫 번째 것을 추측 할 수 없기 때문에'fill (Date_from_source, .direction = "up ")'라고 말하면서 당신이 당신의 학사 학위를 의 –

+0

과 같게하기를 원합니다. Gender 칼럼에 거대한 간격이나 NA가있는 경우 어떻게 작동합니까? 성별 항목에 NA를 입력해야합니다. 다른 편집을하고 모두 함께 제거 할 것입니다. 혼란을 드려 죄송합니다. – elliot

+1

마치 똑같은 것처럼 보입니다! 고마워. – elliot