2015-11-13 7 views
0

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

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

library(tidyr) 
library(dplyr) 
df%>% Participant = gsub("[0-9]", "", Participant) %>% group_by(Participant) %>% rbind(Participant[1],Participant[2]) 

Цель:

Participant No_Photos Participant No_Photos 
Bill1  4  Bill2  6 
Bob1   1  Bob2  5 

ответ

0

Я думаю, что вы могли бы хотеть что-то вроде этого:

library(tidyr) 
library(dplyr) 
library(rex) 

df %>% 
    extract(Participant, 
      c("name", "number"), 
      rex(capture(letters), capture(numbers)), 
      remove = FALSE) %>% 
    gather(variable, value, 
     No_Photos, Participant) %>% 
    unite(new_variable, 
     variable, number) %>% 
    spread(new_variable, value) 
1

Вот вариант использования data.table. Мы извлекаем нечисловые символы из «Участника» для создания «ind», затем используя это, получаем последовательность («N»), а затем конвертируем в широкий формат с dcast.

library(data.table) 
setDT(df)[, ind := sub('\\D+', '', Participant)][, N:= 1:.N, ind] 
dcast(df, N~ind, value.var=c('Participant', 'No_Photos')) 
# N Participant_1 Participant_2 No_Photos_1 No_Photos_2 
#1: 1   bob1   bob2   1   5 
#2: 2   bill1   bill2   4   6 
Смежные вопросы