\HeaderA{Surv}{Create a Survival Object}{Surv}
\aliasA{as.character.Surv}{Surv}{as.character.Surv}
\aliasA{as.data.frame.Surv}{Surv}{as.data.frame.Surv}
\aliasA{format.Surv}{Surv}{format.Surv}
\aliasA{is.na.Surv}{Surv}{is.na.Surv}
\aliasA{is.Surv}{Surv}{is.Surv}
\aliasA{Math.Surv}{Surv}{Math.Surv}
\aliasA{Ops.Surv}{Surv}{Ops.Surv}
\aliasA{print.Surv}{Surv}{print.Surv}
\aliasA{Summary.Surv}{Surv}{Summary.Surv}
\aliasA{[.Surv}{Surv}{[.Surv}
\keyword{survival}{Surv}
\begin{Description}\relax
Create a survival object, usually used as a response variable in a model
formula.
\end{Description}
\begin{Usage}
\begin{verbatim}
Surv(time, event)
or
Surv(time, time2, event, type=, origin=0)
is.Surv(x)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{time}] for right censored data, this is the follow up time.  For interval data, the
first argument is the starting time for the interval.

\item[\code{x}] any S-PLUS object.

\item[\code{event}] The status indicator, normally 0=alive, 1=dead.  Other choices are T/F
(TRUE = death) or 1/2 (2=death).
For interval censored data, the status indicator is 0=right censored,
1= event at \code{time}, 2=left censored, 3=interval censored.
Although unusual, the event indicator can be omitted,
in which case all subjects are assumed to have an event.

\item[\code{time2}] ending time of the interval for interval censored  or counting process 
data only. 
Intervals are
assumed to be open on the left and closed on the right, \code{(start, end]}.
For counting process data,
\code{event} indicates whether an event occurred at the end of the interval.

\item[\code{type}] character string specifying the type of censoring. Possible values
are \code{"right"}, \code{"left"}, \code{"counting"}, \code{"interval"}, or \code{"interval2"}.
The default is \code{"right"} or \code{"counting"} depending on whether the \code{time2}
argument is absent or present, respectively.

\item[\code{origin}] for counting process data, the hazard function origin.  This is most often
used in conjunction with a model containing time dependent strata in order
to align the subjects properly when they cross over from one strata to
another.

\end{ldescription}
\end{Arguments}
\begin{Value}
An object of class \code{Surv}.  There are methods for \code{print}, \code{is.na}, and
subscripting survival objects.  To include a survival object inside a
data frame, use the \code{I()} function.  \code{Surv} objects are implemented as
a matrix of 2 or 3 columns.


In the case of \code{is.Surv}, a logical value \code{T} if \code{x} inherits from 
class \code{"Surv"}, otherwise an \code{F}.
\end{Value}
\begin{Section}{DETAILS}
In theory it is possible to represent interval censored data without a
third column containing the explicit status.  Exact, right censored,
left censored and interval censored observation would be represented as
intervals of (a,a), (a, infinity), (-infinity,b), and (a,b) respectively;
each specifying the interval within which the event is known to have occurred.


If \code{type = "interval2"} then the representation given above is
assumed, with NA taking the place of infinity.  If `type="interval"
\code{event} must be given.  If \code{event} is \code{0}, \code{1}, or \code{2}, the relevant
information is assumed to be contained in \code{time}, the value in \code{time2}
is ignored, and the second column of the result will contain a
placeholder.


Presently, the only methods allowing interval censored data are the
parametric models computed by \code{survreg}, 
so the distinction between open and closed intervals
is unimportant.  
The distinction is important for counting process data and
the Cox model.


The function tries to distinguish between the use of 0/1 and 1/2 coding for
left and right censored data using \code{if (max(status)==2)}.
If 1/2 coding is used and all the subjects are censored, it will
guess wrong.  Use 0/1 coding in this case.
\end{Section}
\begin{SeeAlso}\relax
\code{\LinkA{coxph}{coxph}}, \code{\LinkA{survfit}{survfit}}, \code{\LinkA{survreg}{survreg}}.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
with(aml, Surv(time, status))
with(heart, Surv(start,stop,event))
\end{ExampleCode}
\end{Examples}


