R에 함수를 작성하는 방법을 배우려하고 있으며 테이블 사용과 "수준 변수"를 처리하는 방법과 관련하여 매우 구체적인 질문이 있습니다.테이블 빈도 숫자 범주 작업 함수
내 원래의 문제는 누적 된 위험 기능을 작성하는 것입니다.
예 : 내 기능은 기본적으로이 수행 된 데이터 8 개 관측치가 x= c(1,1,2,2,2,3,14,25)
/시간
- 8 개 관측 F (14)는 다음 동작을 수행 벡터에서
= 2/8 + 3/6 + 1/3 + 1/2 for F (2) = 2/8 + 3/6, 등등.
기본적으로 나는 (얼마나 많은 관측치가 시간 i인지)/(몇 관측치가 i보다 크거나 같은 시간) 그래서 i = 2의 경우 2/8) + 3/(6)이다. 왜냐하면 시간 i가 2 이상인 6 가지 관측이 있기 때문이다.
특히 table
기능을 사용하고있었습니다. 그러나이 함수는 나에게 주파수를 주며 주파수와 관련된 값을 숫자가 아닌 레벨로 취급합니다. 1,2,3,14,15하지만 난 등의 작업을 수행하려고 할 때 : 내 데이터에 대한
v<-c(1,2,3,14,15)
ta<-as.data.frame(table(v))
as.numeric(ta$v)<14
[1] TRUE TRUE TRUE TRUE TRUE
, 나는 TRUE TRUE TRUE FALSE FALSE가 될 결과를 원하는 . table()의 변수를 숫자로 처리하기를 원합니다. 어떻게하면됩니까?
내가하고있는 것을보기 위해, 내 여분의 코드는 아래에 있습니다. 그것은 검열 없이는 잘 작동하지만,이 부분은 검열로 나아가는 열쇠입니다.
cumh<-function (x,t,y=rep(1,length(x))){
le<-length(x)
#Sum comparison of terms
isum<-sum(x<=t)
#Collapse table
ta<-as.data.frame((table(x)))
ta$cum<-cumsum(ta$Freq)
ta$den<-le
for (j in 1:(nrow(ta)-1)) {
ta$den[j+1]<-le-ta$cum[j]
}
ind<-isum>=ta$cum
#correction for right censor:
ta2<-as.data.frame(table(y*x))
cumhaz<-sum(ind*ta2$Freq/ta$den)
return(cumhaz)}