[R-br] substituir datas em linhas específicas

Daniel Marcelino dmarcelino em live.com
Segunda Abril 22 15:47:56 BRT 2013


A solução apresentada pelo Rodrigo é muito mais fácil uma vez que você sabe
a localização (a linha da observação) onde aparece "FATIMALIMA". No
entanto, a minha função foi pensada na possibilidade de você não saber
exactamente onde se encontra as observações, por exemplo, num data frame
muito grande.
Como você não passou um exemplo reproduzível, vou mostra aqui da seguinte
forma:



nome <- rep("FATIMALIMA", 10)
numero <- seq(1:10)
dados <- data.frame(nome, numero)


gsr <-
function(file, search, replace) {
  if (length(search) != length(replace)) stop("The object search and
replace must have the same number of items \n")
changing <- as.character(file)

  for (i in 1:length(search))
  {
    cat("Replacing: ", search[i], " with: ", replace[i], "\n")
changed <- replace(changing, changing == search[i], replace[i])}

cat("\n")
  return(changed)
}


# onde na coluna "nome" for FATIMALIMA a função vai substituir pro FATIMA
LIMA.
Veja os argumentos; file, search, replace.

dados$nome <- gsr(dados$nome, "FATIMALIMA", "FATIMA LIMA" )




2013/4/22 Rodrigo Coster <rcoster em gmail.com>

> Fatima, de maneira genérica, para mudar a j-ésima variavel (coluna) da
> i-ésima observação (linha), tu pode usar
> dados[i, j] <- NOVO VALOR
>
> O que tu precisa é identificar os i (as linhas), dado que o j (a variavel
> que tu quer mudar) já é algo sabido.
>
>
>
> 2013/4/22 Fátima Lima Paula <fatima.lima.paula em gmail.com>
>
>> Daniel, não entendi.
>> Por exemplo, na linha 345 eu quero trocar 20081003 por 20081005.
>> Como faço com essa função?
>>
>>
>> Em 22 de abril de 2013 14:38, Daniel Marcelino <dmarcelino em live.com>escreveu:
>>
>> Eu sei que essa função é imensa e que há formas melhores de fazer isso.
>>> Uso uma função para fazer isso. Primeiro passo a função no prompt:
>>>
>>> gsr <-
>>> function(file, search, replace) {
>>>   if (length(search) != length(replace)) stop("The object search and
>>> replace must have the same number of items \n")
>>> changing <- as.character(file)
>>>
>>>   for (i in 1:length(search))
>>>   {
>>>     cat("Replacing: ", search[i], " with: ", replace[i], "\n")
>>> changed <- replace(changing, changing == search[i], replace[i])}
>>>
>>> cat("\n")
>>>   return(changed)
>>> }
>>>
>>>
>>> Daí é só passar o que você quiser:
>>>
>>> dados$coluna <- gsr(dados$coluna, "FATIMALIMA", "FATIMA LIMA" )
>>>
>>>
>>>
>>> 2013/4/22 Fátima Lima Paula <fatima.lima.paula em gmail.com>
>>>
>>>> Pessoal, quando fui substituir uns nomes no meu banco, usei
>>>> levels(banco$nome) <- gsub("FATIMALIMA", "FATIMA LIMA",
>>>> levels(banco$nome))
>>>> Agora o problema é outro, tenho uma linha com nome, data de nascimento,
>>>> data de internação, motivo da alta etc.
>>>> Em uma específica linha, quero trocar o motivo da alta e a data da
>>>> internação. Não posso usar o comando acima pois existe um monte de outros
>>>> motivos de saida 21, por exemplo, e eu só quero substituir para a FATIMA
>>>> LIMA.
>>>> Alguém, por favor, pode me ajudar?
>>>> Obrigada
>>>>
>>>>
>>>> _______________________________________________
>>>> R-br mailing list
>>>> R-br em listas.c3sl.ufpr.br
>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>>> código mínimo reproduzível.
>>>>
>>>
>>>
>>>
>>> --
>>> \begin{signature}
>>> Daniel Marcelino
>>>dm.silva em umontreal.ca
>>> ☎ (514) 343 6111 #3799
>>> Skype: d.marcelino
>>> ✎ 3200 Jean Brillant,  Office C5071
>>> Montreal, QC; H3T 1N8
>>> Canada
>>> \end{signature}
>>>
>>> "Small steps toward a much better world"
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br em listas.c3sl.ufpr.br
>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> código mínimo reproduzível.
>>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>



-- 
\begin{signature}
Daniel Marcelino
☁ dm.silva em umontreal.ca
☎ (514) 343 6111 #3799
Skype: d.marcelino
✎ 3200 Jean Brillant,  Office C5071
Montreal, QC; H3T 1N8
Canada
\end{signature}

"Small steps toward a much better world"
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130422/35fff6ae/attachment.html>


Mais detalhes sobre a lista de discussão R-br