2016-09-08 3 views
-1
species <- c("frog1","frog1","frog1","frog1","frog1","frog1","frog1","frog1" 
     ,"frog1","frog1","frog2","frog2","frog2","frog2","frog2", 
     "frog2","frog2","frog2","frog2","frog2") 
month <- c(1,12,5,8,10,3,5,7,9,4,2,4,6,7,6,3,8,9,11,1) 
number <- c(3,4,5,1,2,3,4,7,6,7,3,5,6,7,8,9,9,5,3,1) 
a<- data.frame(species,month,number) 

мой кадр данных означает, что я поймал два вида лягушек, лягушек и лягушек2 с разными числами в разные месяцы.выбрать лучший месяц для сезона

Я бы хотел конвертировать месяцы в 4 сезона. Первый сезон - месяц 1, месяц 12, месяц 2, второй - 4,3,5, третий - 7,6,8, а четвертый - 10,9,11. есть порядок в тезисах 4 сезона, а именно: в первом сезоне я бы предпочел выбрать месяц 1, 12-й месяц, второй месяц, наконец, точно так же, во втором сезоне я бы выбрал месяц 4 сначала, 3-й месяц , месяц 5 и т. д. Например, в лягушке 1 есть 2 месяца 1 и 12, я хотел бы забрать месяц 1 вместо 12-го месяца в течение первого сезона.

Я хотел бы спросить, как создать столбец, который может выбрать самый важный месяц в очереди на 4 сезона в двух видах лягушек. Например, в лягушке 1 есть 2 месяца 1 и 12, я хотел бы забрать месяц 1 вместо 12-го месяца в течение первого сезона.

Моего ожидаемый результат:

species <- c("frog1","frog1","frog1","frog1","frog1","frog1","frog1","frog1" 
,"frog1","frog1","frog2","frog2","frog2","frog2","frog2", 
"frog2","frog2","frog2","frog2","frog2") 
month <- c(1,12,5,8,10,3,5,7,9,4,2,4,6,7,6,3,8,9,11,1) 
number <- c(3,4,5,1,2,3,4,7,6,7,3,5,6,7,8,9,9,5,3,1) 
choosemonth <- c("season1","","","","season4","","","season3","","season2", 
     "","season2","","season3","","","","season4","","season1") 
b<- data.frame(species,month,number,choosemonth) 

ответ

0

Я предполагаю, что немного в вашем окончательном желаемом результате, но вот как создать сезон и важность, и я решение для наиболее важного месяца для каждый вид

Вот способ с dplyr:

library(dplyr) 
a %>% 
    # Season is basically just one-off quarters 
    mutate(season = trunc((month + 1)%%12/3), 
    # for each month the value mod 3 goes in order 2,3,1 
    importance = c(2,3,1)[month %% 3 + 1]) %>% 
    group_by(season, species) %>% 
    # keep only those with the max importance 
    filter(importance == max(importance)) 

EDIT: похоже, вы просто хотите, чтобы пометить значение с наиболее важным, так вот, как сделать это,

a %>% 
    # Season is basically just one-off quarters 
    mutate(season = trunc((month + 1)%%12/3), 
    # for each month the value mod 3 goes in order 2,3,1 
     importance = c(2,3,1)[month %% 3 + 1]) %>% 
    mutate(choosemonth = ifelse(importance == 3, paste0('season',season + 1),'')) 

EDIT 2: редактировать еще один раз, был разделив на 3-х сезонов, а не 4

Смежные вопросы