2015-11-12 2 views
2

Я пытаюсь переставить строки в столбцы определенным образом (желательно с использованием dplyr), но я не знаю, с чего начать. Я пытаюсь создать одну строку для каждого человека (Билл или Боб) и иметь все значения этих лиц в одной строке. До сих пор япереупорядочить определенные строки в столбцы с помощью dplyr

df<-data.frame(
    Participant=c("bob1","bill1","bob2","bill2"), 
    No_Photos=c(1,4,5,6) 
) 

res<-df %>% group_by(Participant) %>% dplyr::summarise(phot_mean=mean(No_Photos)) 

, который дает мне:

Participant mean(No_Photos) 
     (fctr)   (dbl) 
1  bill1    4 
2  bill2    6 
3  bob1    1 
4  bob2    5 

ЦЕЛЬ:

mean_NO_Photos_1 mean_No_Photos_2 
bob 1    5 
bill 4    6 

ответ

1

Использование tidyr и dplyr:

library(tidyr) 
library(dplyr) 
df %>% mutate(rep = extract_numeric(Participant), 
       Participant = gsub("[0-9]", "", Participant)) %>% 
     group_by(Participant, rep) %>% 
     summarise(mean = mean(No_Photos)) %>% 
     spread(rep, mean) 

Source: local data frame [2 x 3] 

    Participant  1  2 
     (chr) (dbl) (dbl) 
1  bill  4  6 
2   bob  1  5 
+0

Нет проблем, вы можете удалить комментарии, используя маленький x, если они являются unne eded – jeremycg

+0

Я не хочу редактировать ваше решение напрямую, но если вы не возражаете изменить «mean = mean (No_Photos)» на «mean = mean (phot_mean)», что бы устранить проблему (я обновил свой код, чтобы соответствовать этому) – Rilcon42

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