I cant get lerp to work right.

This code here works perfectly but instead of the drag starting from zero to 4 it goes from 4 to zero.
If i do it like : rb.drag = Mathf.Lerp(03f , 4f , 1 * Time.deltaTime); it gives a single value and it doesnt lerp

if (!(crouching && running))
            {
                rb.drag = 4f;
            }
            else if (crouching && running)
            {
                rb.drag = Mathf.Lerp(rb.drag, 0.3f, 1 * Time.deltaTime);
            }

It is going from 4 to zero because rb.drag is already set to 4. You should check if rb.drag is 4 and if it is, set it to 0.

Your code should look like this:

if (!(crouching && running))
    {
        rb.drag = 4f;
    }
else if (crouching && running)
    {
        if(rb.drag == 4f)
             rb.drag = 0f;
        
        rb.drag = Mathf.Lerp(rb.drag, 0.3f, 1 * Time.deltaTime);
    }

Hope it helps!