André, vou tentar...

Já fiz o seguinte, segundo exemplo anterior da lista...

A recomendação de fósforo depende do nível de argila presente no solo, então primeiro classifiquei o nível de argila da amostra,

CRM

arg=rep(seq(10,70,20),5)                     #dados de argila
class_arg=c(0,15,35,60,100)                #niveis da argila
resarg=c("MB","B","M","A")                #classes da argila
ca=cut(arg,class_arg,resarg)
data.frame(arg,ca)   #arg=dados e  ca é  a classe de nível de argila

Até ai ok

p=c(9, 5,3,2,15,8,5,4,25,15,10,7,35,15,10,7,50,35,20,15)# valores de fosforo
t=data.frame(p,ca);t ; #ONDE P=NIVEL DE P(dados) E K CLASSE DE ARGILA DAQUELA AMOSTRA DE P

# até aqui, tudo certo, nível de argila classificada casada com a quantidade de fosforo

#classificação de fosforo
n1=c(0,2.7,5.4,8,12,100);n1  # nivel classificação de fósforo com mais de 60% de argila

#vou explicar n1
#onde <2.7                    --nível muito baixo de fosforo com +60% argila
# entre 2.8 e 5.4             -- nível baixo de fosforo com +60% argila
# entre  5.5 e 8               -- nível médio de  fosforo com +60% argila
#entre 8.1 e 12               -- nível alto defosforo com +60% argila

#e assim sucessivamente

n2=c(0,4,8,12,18,100);n2    # classificação de fósforo com 35 a  60% de argila
n3=c(0,6.6,12,20,30,100);n3  # classificação de fósforo com 15 a  35% de argila
n4=c(0,10,20,30,45,100);n4 # classificação de fósforo com menos de 15% de argila

resp=c("Muito.Baixo","Baixo", "Medio", "Bom", "Muito.bom") ;resp

t$classi=ifelse(t$ca=="B",
  cut(t$p, n1, resp, inc=T , right=F, ord=T),
  cut(t$p, n2, resp, inc=T , right=F, ord=T,
  cut(t$p, n3, resp, inc=T , right=F, ord=T),
  cut(t$p, n4, resp, inc=T , right=F, ord=T)))

t$classi=factor(t$classi, lev=1:5, lab=resp, ord=T)
data.frame(t)    # resultado errado

Deveria dar uma sequencia de :
4xMuito.Baixo,
4x Baixo,
4X Medio,
4x Bom e
4x Muito.Bom



Me parece que esta função funciona quando tenho dois níveis de argila, mas como são 4

Grato


Em 18 de maio de 2013 17:48, andrebvs [via R-br] <ml-node+s2285057n4659356h4@n4.nabble.com> escreveu:
Não ficou claro o que vc está querendo colega, poderia ser mais claro?

Att.
André
 

Em 18/05/2013 09:28, Hélio Gallo Rocha < [hidden email] > escreveu:
Bom dia a todos,
 
Para recomendar adubação fosfatada é necessário classificar a quantidade de fósforo da análise em conjunto a textura do solo.
 
 Tabela da quinta aproximação 

 

Nível de Fósforo mg/dm3

Argila%

muito baixo

Baixo

Médio

Bom

Muito Bom

60-100

<2.7 (menor e igual)

2.8-5.4

5.5-8

8.1-12

>12

35-60

<4

4.1-8

8.1-12

12.1-18

>18

15-35

<6.6

6.7-12

12.1-20

20.1-30

>30

0-15

<10

10.1-20

20.1-30

30.1-45

>45

 
 
 
Fiz o seguinte:
solo=c(1:50)                       # resultado da análise do solo
argila=c(60,35,15,0)            # teor de argila
p1=c(0,2.7,5.4,8,12)             # fósforo com + de 60% de argila
p2=c(0,4,8,12,18)                # fósforo com 35 a  60% de argila
p3=c(0,6.6,12,20,30)            # fósforo com 15 a  35% de argila
p4=c(0,10,20,30,45)            # fósforo com < 15% de argila
res=c("Muito.Baixo","Baixo", "Medio", "Alto", "Muito.alto")
 
Assim se o resultado de P é 3.5 :
60% de arg, seria classificado como Baixo
35% de arg. seria classificado como muito baixo
 
andei dando uma olhada na solução do post 

Uso do ifelse

 
A saida desta função seria casada com uma recomendação,
 
Grato a todos
 
--
Hélio Gallo Rocha
IFSULDEMINAS - Câmpus Muzambinho
 

_______________________________________________
R-br mailing list
[hidden email]
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.


If you reply to this email, your message will be added to the discussion below:
http://r-br.2285057.n4.nabble.com/R-br-Classificar-fosforo-e-textura-do-solo-tp4659355p4659356.html
To unsubscribe from R-br, click here.
NAML



--
Hélio Gallo Rocha
IFSULDEMINAS - Câmpus Muzambinho