2017-11-21 7 views
0

나는 식당 웹 사이트의 주소 데이터를 스크랩 한 목록을 결과로 저장 한 웹 스크래핑/매핑 프로젝트를 진행하고 있습니다. loc_list이라고합니다.List to Tibble Plus 목록 이름으로 열 추가

질문 가장, 하나의 data.frame/tibble 새로운 data.frame에, (현재 bind_rows() 사용)뿐만 아니라에이 목록 항목을 변환 각 목록 항목 이름에 해당 metro라는 제목의 칼럼을하는 방법이다. 예제에서 출력은 3 alpharetta이고 그 다음에 3 atlanta, 그 다음 1 buford이옵니다.

loc_list 

$alpharetta 
# A tibble: 3 x 2 
        names             address 
        <chr>             <chr> 
1 East Roswell   US 2630 Holcomb Bridge Rd Alpharetta, GA 30022 
2 Old Milton US 4305 Old Milton Parkway Ste 101 Alpharetta, GA 30022 
3 Windward  US 875 N Main Street Ste 306 Alpharetta, GA 30009 

$atlanta 
# A tibble: 3 x 2 
         names           address 
         <chr>           <chr> 
1 Philips Arena  US 100 Techwood Drive Atlanta, GA 30303 
2 Virginia Highlands  US 1006 N Highland Ave Atlanta, GA 30306 
3 Perimeter  US 1211 Ashford Crossing Atlanta, GA 30346 

$buford 
# A tibble: 1 x 2 
      names           address 
      <chr>           <chr> 
1 Woodward US 3250 Woodward Crossing Blvd Buford, GA 30519 

대상 출력 : alistaire으로

names   address  metro 
East Ros... US 2630... alpharetta 
+3

'bind_rows (loc_list = "메트로".ID) '또한 purrr'사용할 수 있습니다 :: map_df'을 앞에'.id' 매개 변수를 사용하여, 당신이 기능을 적용하는 경우 : 다음 예제 데이터입니다 이 상태에 도달하십시오. – alistaire

+0

FWIW 당신은 ​​실제로'dput()'을 사용하여 실제 R 태그 top text_에서 질문의 데이터를 공유하라고 말했습니다. #nojoke – hrbrmstr

답변

0

bind_rows 지적은 .id에 충분하다.

alpharetta <- tibble(names=c("East Roswell", "Old Milton"), 
        address = c("US 2630 Holcomb Bridge Rd Alpharetta, GA 30022", "4305 Old Milton Parkway Ste 101 Alpharetta, GA 30022")) 
atlanta <- tibble(names=c("Philips Arena", "Virginia Highlands"), 
        address = c("US 100 Techwood Drive Atlanta, GA 30303", "US 1006 N Highland Ave Atlanta, GA 30306")) 

loc_list <- list(alpharetta = alpharetta, atlanta = atlanta) 

bind_rows(loc_list, .id="metro") 
# A tibble: 4 x 3 
     metro    names            address 
     <chr>    <chr>             <chr> 
1 alpharetta  East Roswell  US 2630 Holcomb Bridge Rd Alpharetta, GA 30022 
2 alpharetta   Old Milton 4305 Old Milton Parkway Ste 101 Alpharetta, GA 30022 
3 atlanta  Philips Arena    US 100 Techwood Drive Atlanta, GA 30303 
4 atlanta Virginia Highlands    US 1006 N Highland Ave Atlanta, GA 30306