2017-10-12 3 views
0

하나의 열 (Place)이 위치 문장으로 구성된 데이터 세트에서 작업하고 있습니다.왼쪽에서 오른쪽으로 구분 기호로 열을 분할 R

librabry(tidyverse) 

example <- tibble(Datum = c("October 1st 2017", 
          "October 2st 2017", 
          "October 3rd 2017"), 
      Place = c("Tabiyyah Jazeera village, 20km south east of Deir Ezzor, Deir Ezzor Governorate, Syria", 
         "Abu Kamal, Deir Ezzor Governorate, Syria", 
         "شارع القطار al Qitar [train] street, al-Tawassiya area, north of Raqqah city centre, Raqqah governorate, Syria")) 

I는 I가 tidyverse package 갖는 솔루션을 선호하도록 콤마 구분하여 Place 열을 분할하고자. Place의 값은 다른 길이이므로 오른쪽에서 왼쪽으로 시작하고 싶습니다. 따라서 국가 Syria은이 데이터 프레임의 마지막 열에있는 값입니다.

아, 그리고 RegEx 코드로 보너스를 사용하여 아랍어 문자를 삭제 하시겠습니까?

미리 감사드립니다.

편집 : (@ g5w 덕분에) 아랍어 문자를 제거 : 내 대답을 찾을 수

gsub("[\u0600-\u06FF]", "", airstrikes_okt_clean$Plek) 

그리고을 분할 tidyr의 방법으로 열 :

airstrikes_okt_clean <- separate(example, 
          Place, 
          into = c("detail", 
             "detail2", 
             "City_or_village", 
             "District", 
             "Country"), 
          sep = ",", 
          fill = "left") 

답변

1

그냥하게 분할 문자열을 쉼표로 바꾸고 역순으로 씁니다.

lapply(strsplit(Place, ","), rev) 
[[1]] 
[1] " Syria"       " Deir Ezzor Governorate"  
[3] " 20km south east of Deir Ezzor" "Tabiyyah Jazeera village"  

[[2]] 
[1] " Syria"     " Deir Ezzor Governorate" 
[3] "Abu Kamal"    

[[3]] 
[1] " Syria"        " Raqqah governorate"     
[3] " north of Raqqah city centre"  " al-Tawassiya area"     
[5] "شارع القطار al Qitar [train] street" 

이 분할 전에 아랍어 문자를 제거하려면 다음

gsub("[\u0600-\u06FF]", "", Place) 
[1] "Tabiyyah Jazeera village, 20km south east of Deir Ezzor, Deir Ezzor Governorate, Syria"    
[2] "Abu Kamal, Deir Ezzor Governorate, Syria"                
[3] " al Qitar [train] street, al-Tawassiya area, north of Raqqah city centre, Raqqah governorate, Syria" 
+0

'lapply()'가없고 tidyr이없는 해결책이 있습니까? 어쩌면'separator' 함수가 있을까요? – Tdebeus

+0

@Tdebeus있을 수도 있지만, 나는 깔끔한 남자가 아닙니다. – G5W

0

을하려고 한 라이너입니다.

sapply(strsplit(example$Place, ","), function(x) trimws(x[length(x)])) 

그것은 마지막 쉼표 후 문자열을 반환 그것을 Syria 또는 기타 될 것입니다.

관련 문제