këtu po ndodhin disa gjëra. Ju mund të gjeni shumë miq, nëse jepni një shembull të riprodhueshëm dhe na tregoni se ku shkojnë gjërat keq. Më poshtë është një qasje e bazuar në {tidyverse}
. Funksionon me krijimin e një tabele të mbivendosur për secilin nga vendet tuaja. Shpresoj se do t'ju çojë atje ku dëshironi të shkoni dhe ju mund ta përshtatni atë me problemin tuaj.
1.) filloni Si ushtrimi i parë lidhni kornizat tuaja të ndryshme të të dhënave në një të madhe. Unë simuloj disa të dhëna për të krijuar një kornizë të dhënash. Lexoni se si ta bëni këtë, nëse kjo tashmë është një problem për ju.
library(tidyverse)
set.seed(666) # set seed and simulate data ---------------------------------
Airport <- rep(c("RJOO","LFPG","EHAM"), 5)
Day <- sample(c( as.POSIXct("1998-01-01")
,as.POSIXct("1998-01-02")
,as.POSIXct("1998-01-03") ), 15, replace = TRUE)
Average <- sample(c(12:25), 15, replace = TRUE)
df <- tibble(Airport, Day, Average)
Kjo jep:
df
# A tibble: 15 x 3
Airport Day Average
<chr> <dttm> <int>
1 RJOO 1998-01-02 00:00:00 19
2 LFPG 1998-01-02 00:00:00 18
3 EHAM 1998-01-03 00:00:00 13
4 RJOO 1998-01-03 00:00:00 12
5 LFPG 1998-01-02 00:00:00 21
6 EHAM 1998-01-01 00:00:00 17
7 RJOO 1998-01-01 00:00:00 19
8 LFPG 1998-01-01 00:00:00 20
9 EHAM 1998-01-02 00:00:00 15
10 RJOO 1998-01-03 00:00:00 22
11 LFPG 1998-01-01 00:00:00 24
12 EHAM 1998-01-01 00:00:00 19
13 RJOO 1998-01-03 00:00:00 21
14 LFPG 1998-01-03 00:00:00 19
15 EHAM 1998-01-02 00:00:00 18
2.) shoqërimi i emrave të shteteve nuk është e qartë nga shembulli juaj se si i lidhni emrat e shteteve. Unë supozoj se ju e dini rrugën tuaj. Treguesit e vendndodhjes së aeroportit ICAO (në thelb 2 shkronjat e para ose të para) ju japin vendin. Nëse keni një tabelë kërkimi, mund të bashkoni treguesin e vendndodhjes (kodi me 4 shkronja, RJOO) me shtetin. Ju mund të bashkoni tabelat e kërkimit me left_join()
të {dplyr}
.
Duke qenë dembel përdor një case_when()
për t'u rrokullisur. padyshim, mund t'ju duhet ta bëni këtë ndryshe.
# associate country names with data
df <- df %>%
mutate(Country = case_when( # a lazy look up for country name creation -----
Airport == "RJOO" ~ "Japan"
, Airport == "LFPG" ~ "France"
, Airport == "EHAM" ~ "Netherlands"
, TRUE ~ as.character(NA) )
) #----------------------------------------------------------------------------
Ju e dini se keni sa vijon:
# A tibble: 15 x 4
Airport Day Average Country
<chr> <dttm> <int> <chr>
1 RJOO 1998-01-02 00:00:00 19 Japan
2 LFPG 1998-01-02 00:00:00 18 France
3 EHAM 1998-01-03 00:00:00 13 Netherlands
4 RJOO 1998-01-03 00:00:00 12 Japan
5 LFPG 1998-01-02 00:00:00 21 France
6 EHAM 1998-01-01 00:00:00 17 Netherlands
7 RJOO 1998-01-01 00:00:00 19 Japan
8 LFPG 1998-01-01 00:00:00 20 France
9 EHAM 1998-01-02 00:00:00 15 Netherlands
10 RJOO 1998-01-03 00:00:00 22 Japan
11 LFPG 1998-01-01 00:00:00 24 France
12 EHAM 1998-01-01 00:00:00 19 Netherlands
13 RJOO 1998-01-03 00:00:00 21 Japan
14 LFPG 1998-01-03 00:00:00 19 France
15 EHAM 1998-01-02 00:00:00 18 Netherlands
3.) korniza e të dhënave të mbivendosur Krijimi i një kornize të të dhënave të mbivendosur është i thjeshtë.
df <- df %>% group_by(Country) %>% nest()
df
# A tibble: 3 x 2
# Groups: Country [3]
Country data
<chr> <list>
1 Japan <tibble [5 x 3]>
2 France <tibble [5 x 3]>
3 Netherlands <tibble [5 x 3]>
4.) duke përdorur një tabelë të ndërthurur për të shkruar pjesët Fillimisht ne krijojmë një funksion që na ndihmon të shkruajmë pjesën e vendit të kornizës së të dhënave/tibble tonë.
# utility function to write out country parts
write_country <- function(.ctry, .data){
fn <- paste0(.ctry, ".csv") # construct a filename to your liking
readr::write_csv(.data, fn)
}
# as we write out and the function does not return
# we use purrr's walk instead of map to iterate over the nested data
walk2( .x = df$Country # you have 2 variables, thus use walk2
, .y = df$data # define .x and .y vector
, .f = ~ write_country(.x, .y) # supply your function, watch the tilde ~
)
# you will now see 3 csv files: Japan.csv, France.csv, and Netherlands.csv
Kjo recetë duhet të funksionojë për ju. Vetëm sigurohuni që të përcaktoni emrin e skedarit duke marrë parasysh strukturën e dosjes dhe vendin ku dëshironi ta ruani atë, etj.
25.06.2021