Sunday, 26 November 2017

Ddply moving average


Im um novato R e estou tendo um monte de problemas para fazer algo que é provavelmente muito simples. Eu tenho um grande conjunto de dados dividido em grupos por código de país, e eu quero ter uma média móvel de 3 meses de um índice de preços, por país e, em seguida, colocá-lo em uma nova coluna que corresponde ao mês apropriado. Ive tentando usar rollmean como este sem sucesso (código e mensagens de erro abaixo): Qualquer ajuda seria muito apreciada perguntou Mar 10 12 at 6:42 Em sua primeira tentativa, sua função não usa seu argumento x, e sempre retorna A mesma coisa (um vetor com o tamanho errado). Além disso, o primeiro argumento, deve ser um vetor. Por fim, tapply retorna uma lista de vetores: você não pode colocar o resultado diretamente em um data. frame. No seu segundo exemplo, o terceiro argumento de plyr deve ser uma função, não uma expressão. Se você quiser usar uma expressão, você pode usar resumir ou transformar como uma função (resumo retorna um 1-row data. frame para cada valor de ccode., Enquanto a transformação mantém o número de linhas inalteradas), e colocar as expressões como argumentos adicionais . Respondeu Mar 10 12 às 7: 03 Eu tenho um acompanhamento longitudinal de gravações de pressão arterial. O valor em um determinado ponto é menos preditivo do que é a média móvel (média de rolamento), por isso Id gostaria de calculá-la. Os dados parecem com Id como calcular uma nova variável, chamada BLOODPRESSUREUPDATED. Esta variável deve ser a média móvel para BLOODPRESSURE e tem as seguintes características: Uma média móvel é o valor atual mais o valor anterior dividido por dois. Para a primeira observação, o BLOODPRESSUREUPDATED é apenas a corrente BLOODPRESSURE. Se isso estiver faltando, BLOODPRESSUREUPDATED deve ser a média geral. Os valores em falta devem ser preenchidos com o valor anterior mais próximo. Ive tentou o seguinte: Eu também tentei rollaply e rollmeanr sem sucesso. Id apreciar alguma assistência. Perguntou Oct 5 14 at 0:45 Ao calcular a média móvel, o número de elementos retornados é menor do que o número de linhas dos dados, ou seja, apenas os elementos quotn-1quot são retornados. Assim, pode estar causando o problema aqui. Ou você consideraria adicionar a coluna de média móvel separadamente, como: test2BLOODPRESSUREUPDATED lt - com (test2, c (mean (BLOODPRESSURE, na. rm T), rollapply (BLOODPRESSURE, 2, mean, na. rm T))) ndash KFB Oct 5 14 às 3:40 Obrigado pelo esforço KFB. Infelizmente, não funcionou. Eu tentei algumas versões editadas também. Talvez as funções do zoo não sejam adequadas para isso Eu codifiquei o seguinte que funciona: test5 lt - test test5UM lt - rep (NA, nrow (test5)) test5first lt - duplicated (test5ID) for (i in 1: nrow Test5)) else test5 Mas it39s inacreditavelmente lento. Ndash Adam Robinsson Oct 5 14 at 7: 09Built-in Funções Extrair ou substituir substrings em um vetor de caracteres. X lt - quotabcdefquot substr (x, 2, 4) é quotbcdquot substr (x, 2, 4) lt - quot22222quot is quota222efquot Busca por padrão em x. Se FALSE fixo, o padrão é uma expressão regular. Se fixedTRUE, então pattern é uma string de texto. Retorna índices correspondentes. Grep (quotAquot, c (quotbquot, quotAquot, quotcquot), fixedTRUE) retorna 2 Encontre padrão em x e substitua por texto de substituição. Se fixedFALSE então pattern é uma expressão regular. Se T fixo, o padrão é uma string de texto. Sub (quotsquot, quot. quot, quotHello Therequot) retorna quotHello. Therequot Dividir os elementos do vetor de caracteres x na divisão. Strsplit (quotabcquot, quotquot) retorna 3 vetor de elemento quotaquot, quotbquot, quotcquot Concatenate strings depois de usar a seqüência de caracteres sep para separá-los. Colar (quotxquot, 1: 3, sepquotquot) retorna c (quotx1quot, quotx2quot quotx3quot) paste (quotxquot, 1: 3, sepquotMquot) retorna c (quotxM1quot, quotxM2quotxM3quot) paste (quotToday isquot, date ()

No comments:

Post a Comment