का हिस्सा निकालें मेरे पास अक्षांश और देशांतर द्वारा मौसम स्टेशनों और उनके स्थानों की एक सूची है। स्वरूपण समस्या थी और उनमें से कुछ में घंटों और मिनट होते हैं जबकि अन्य में घंटों, मिनट और सेकंड होते हैं। मैं रेगेक्स का उपयोग कर पैटर्न पा सकता हूं लेकिन मुझे अलग-अलग टुकड़ों को निकालने में परेशानी हो रही है।आर regex/gsub: पैटर्न
Station latHr latMin latSec latDir lonHr lonMin lonSec lonDir
1940 K01R 31 08 00 N 092 34 00 W
1941 K01T 28 08 00 N 094 24 00 W
1942 K03Y 48 47 00 N 096 57 00 W
1943 K04V 38 05 50 N 106 10 07 W
1944 K05F 31 25 16 N 097 47 49 W
1945 K06D 48 53 04 N 099 37 15 W
मैं इस regex मैच मिल सकता है:
data.format <- "\\d{1,3}-\\d{1,3}(?:-\\d{1,3})?[NSWE]{1}"
grep(data.format, wthrStat1$lat)
लेकिन अनिश्चित है कि कैसे प्राप्त करने के लिए कर रहा हूँ
> head(wthrStat1)
Station lat lon
1940 K01R 31-08N 092-34W
1941 K01T 28-08N 094-24W
1942 K03Y 48-47N 096-57W
1943 K04V 38-05-50N 106-10-07W
1944 K05F 31-25-16N 097-47-49W
1945 K06D 48-53-04N 099-37-15W
मैं कुछ इस तरह करना चाहते हैं:
यहाँ डेटा है कॉलम में व्यक्तिगत भागों। मैंने कुछ चीजों की कोशिश की है जैसे:
wthrStat1$latHr <- ifelse(grepl(data.format, wthrStat1$lat), gsub(????), NA)
लेकिन बिना किसी किस्मत के।
> dput(wthrStat1[1:10,])
structure(list(Station = c("K01R", "K01T", "K03Y", "K04V", "K05F",
"K06D", "K07G", "K07S", "K08D", "K0B9"), lat = c("31-08N", "28-08N",
"48-47N", "38-05-50N", "31-25-16N", "48-53-04N", "42-34-28N",
"47-58-27N", "48-18-03N", "43-20N"), lon = c("092-34W", "094-24W",
"096-57W", "106-10-07W", "097-47-49W", "099-37-15W", "084-48-41W",
"117-25-42W", "102-24-23W", "070-24W")), .Names = c("Station",
"lat", "lon"), row.names = 1940:1949, class = "data.frame")
कोई सुझाव:
यहाँ एक dput() है?
क्या आपने रेगेक्स पर फ़ैरेंटिसिस का उपयोग करके * प्रत्येक कॉलम को * समूहबद्ध करने का प्रयास किया है? –
@ ऑस्करमेडरोस: नहीं, आप यह कैसे करेंगे? – screechOwl
मुझे नहीं पता कि 'आर' में रेगेक्स कैसे काम करता है, लेकिन अधिकांश भाषाओं में आप समूह बना सकते हैं जिसमें आपको पैरेंटिसिस के अंदर क्या चाहिए। 'Id = (\ d +)' की तरह। यदि आपका मिलान 'id = 1234 'है, तो पहला समूह' 1234' होगा। –