
Boa tarde. Tenho a seguinte planilha, onde as colunas são anos. Cada linha, represente um determinado dia do ciclo da cultura do milho. Os valores "0" representam que nesse dia, não houve chuva. Os valores "1" representam os dias que choveram. Pois bem, preciso contar os períodos de chuva e seca em cada ano. Porém, não é o perído total, e sim os subperíodos. Exemplo: No ano de 1979, tenho 1 dia de chuva (1° subperiodo), depois tenho 6 dias de seca (2° subperiodo), depois 1 dia de chuva (3 subperiodo), depois 2 dias de seca (4 subperiodo) e assim vai..... Existe um jeito de fazer isso no R automaticamente? Tenho vários anos para fazer isso..se for ficar contando, vou demorar muito... Desde já agradeço a ajuda. obrigado Exemplo: 1979 1980 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 -- Lucas F. de Souza Eng. Agrícola - CONAB M.Sc. Produção Vegetal - UENF Doutorando Engenharia de Sistemas Agrícolas - ESALQ/USP tel: (19) 8160-7068

Veja o que você pode melhorar nisso x <- c(0,0,0,0,1,1,0,0,0,1,1,0,0,0) sum(abs(diff(x)))+1 À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

exemplo = structure(list(X1979 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L), X1980 = c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L)), .Names = c("X1979", "X1980"), class = "data.frame", row.names = c(NA, -27L)) lapply(exemplo, rle) O resultado sera: $X1979 Run Length Encoding lengths: int [1:11] 1 6 1 2 1 1 1 1 5 2 ... values : int [1:11] 1 0 1 0 1 0 1 0 1 0 ... $X1980 Run Length Encoding lengths: int [1:9] 2 3 2 1 2 4 4 4 5 values : int [1:9] 0 1 0 1 0 1 0 1 0 a interpretacao fica pra vc... assim como a dica da criacao do conjunto de dados de exemplo. b

ok...deu certo, muito obrigado...Agora, como eu consigo salvar esse resultado... estou tentando salvar com o seguinte comando write.table, mas fala que não é data.frame... obrigado mais uma vez Citando Benilton Carvalho <beniltoncarvalho@gmail.com>:
exemplo = structure(list(X1979 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L), X1980 = c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L)), .Names = c("X1979", "X1980"), class = "data.frame", row.names = c(NA, -27L))
lapply(exemplo, rle)
O resultado sera:
$X1979 Run Length Encoding lengths: int [1:11] 1 6 1 2 1 1 1 1 5 2 ... values : int [1:11] 1 0 1 0 1 0 1 0 1 0 ...
$X1980 Run Length Encoding lengths: int [1:9] 2 3 2 1 2 4 4 4 5 values : int [1:9] 0 1 0 1 0 1 0 1 0
a interpretacao fica pra vc... assim como a dica da criacao do conjunto de dados de exemplo.
b
-- Lucas F. de Souza Eng. Agrícola - CONAB M.Sc. Produção Vegetal - UENF Doutorando Engenharia de Sistemas Agrícolas - ESALQ/USP tel: (19) 8160-7068

isto pode ajudar
x [1] 1 0 0 0 1 1 0 1 0 0 0 0 rle(x) Run Length Encoding lengths: int [1:6] 1 3 2 1 1 4 values : num [1:6] 1 0 1 0 1 0 length(rle(x)[[2]]) [1] 6
Em 29 de março de 2012 15:55, Lucas Fernandes de Souza <luc.souza@usp.br> escreveu:
ok...deu certo, muito obrigado...Agora, como eu consigo salvar esse resultado... estou tentando salvar com o seguinte comando write.table, mas fala que não é data.frame... obrigado mais uma vez
Citando Benilton Carvalho <beniltoncarvalho@gmail.com>:
exemplo = structure(list(X1979 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L), X1980 = c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L)), .Names = c("X1979", "X1980"), class = "data.frame", row.names = c(NA, -27L))
lapply(exemplo, rle)
O resultado sera:
$X1979 Run Length Encoding lengths: int [1:11] 1 6 1 2 1 1 1 1 5 2 ... values : int [1:11] 1 0 1 0 1 0 1 0 1 0 ...
$X1980 Run Length Encoding lengths: int [1:9] 2 3 2 1 2 4 4 4 5 values : int [1:9] 0 1 0 1 0 1 0 1 0
a interpretacao fica pra vc... assim como a dica da criacao do conjunto de dados de exemplo.
b
-- Lucas F. de Souza Eng. Agrícola - CONAB M.Sc. Produção Vegetal - UENF Doutorando Engenharia de Sistemas Agrícolas - ESALQ/USP tel: (19) 8160-7068
_______________________________________________ R-br mailing list R-br@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.
-- Luis Iván Ortiz Valencia Doutorando Saúde Pública - Epidemiologia, IESC, UFRJ Estatístico Msc. Spatial Analyst Msc.

definitivamente nao eh um data.frame... afinal, data.frames exigem que todas as colunas tenham o mesmo numero de linhas e esse nao e' o caso para frequencias de chuvas por ano... escreva-nos com um exemplo de como vc representaria esses resultados de subperiodos numa tabela, que a gente se propoe a ajudar mais uma vez.... uma alternativa que vc tem e' salvar uma tabela para cada ano.... (mais uma vez exemplo reproduzivel....) exemplo = structure(list(X1979 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L), X1980 = c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L)), .Names = c("X1979", "X1980"), class = "data.frame", row.names = c(NA, -27L)) resultados = lapply(exemplo, rle) tabelas = lapply(resultados, function(x) as.data.frame(unclass(x))) lapply(names(tabelas), function(x) write.table(tabelas[[x]], file=paste(x, '.txt', sep=''), quote=FALSE, sep='\t', row.names=FALSE)) dai' procure os arquivos no seu diretorio local. benilton 2012/3/29 Lucas Fernandes de Souza <luc.souza@usp.br>
ok...deu certo, muito obrigado...Agora, como eu consigo salvar esse resultado... estou tentando salvar com o seguinte comando write.table, mas fala que não é data.frame... obrigado mais uma vez
Citando Benilton Carvalho <beniltoncarvalho@gmail.com>:
exemplo = structure(list(X1979 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L), X1980 = c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L)), .Names = c("X1979", "X1980"), class = "data.frame", row.names = c(NA, -27L))
lapply(exemplo, rle)
O resultado sera:
$X1979 Run Length Encoding lengths: int [1:11] 1 6 1 2 1 1 1 1 5 2 ... values : int [1:11] 1 0 1 0 1 0 1 0 1 0 ...
$X1980 Run Length Encoding lengths: int [1:9] 2 3 2 1 2 4 4 4 5 values : int [1:9] 0 1 0 1 0 1 0 1 0
a interpretacao fica pra vc... assim como a dica da criacao do conjunto de dados de exemplo.
b
-- Lucas F. de Souza Eng. Agrícola - CONAB M.Sc. Produção Vegetal - UENF Doutorando Engenharia de Sistemas Agrícolas - ESALQ/USP tel: (19) 8160-7068
______________________________**_________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-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<http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
participantes (4)
-
Benilton Carvalho
-
Lucas Fernandes de Souza
-
Luis Iván Ortiz Valencia
-
Walmes Zeviani