2015-11-17 3 views
1

У меня есть data.frame с двумя столбцами: имя и индекс и 2 миллиона строк.Как изменить столбец внутри data.frame на основе индекса в R?

Я уверен, что все указатели были написаны правильно, но мне нужно проверить столбец «Имя».

Как сделать, чтобы изменить все значения Name на основе значений индекса.

Позвольте привести пример. Предположим, что мы имеем следующую data.frame «дб»:

db 
Index Name 
1  Carlos 
2  John 
3  Bill 
4  Mary 
1  Cerlas 

Как показано, «Name» должно быть равным для каждого значения индекса, а кто-то написать его неправильно.

Как бы это исправить? Есть ли решение, использующее «dplyr» или «tidyr»?

Я пробовал следующий код, но он не сработал.

for (i in unique(db$Index)) { 
    db$Nome[db$Index==i] <- db$Nome[db$Index==i][1] 
} 

Благодаря

+2

Как мы узнаем, что такое правильное написание? – akrun

+0

@akrun Не имеет значения, фактически –

+0

В этом случае отправлено решение. – akrun

ответ

1

Вы можете сделать это в dplyr. Здесь мы делаем первое название для каждого индекса название для всего индекса:

library(dplyr) 
dat %>% group_by(Index) %>% 
     mutate(Name = Name[1]) 
+0

Это тот ответ, который я искал. Благодаря! –

2

Если кто правильно назвал его первый элемент «Имя» для каждого «Index», мы можем использовать data.table для назначения «Имя» как первый элемент «Имя», сгруппированный по «Индексу».

library(data.table) 
setDT(db)[, Name:= Name[1L], by = Index] 
Смежные вопросы