내 데이터는 다음과 같습니다.
ID Day advance nb_event
ID1 1 NA 899
ID1 1 NA 899
ID1 1 NA 899
ID1 2 0.14 899
ID1 2 NA 899
ID1 3 0.22 899
ID1 3 NA 899
ID1 3 NA 899
ID1 2 NA 899
ID1 4 -0.96 899
ID1 4 NA 899
...
ID1 30 0.74 899
ID1 30 NA 899
ID1 30 NA 899
ID1 30 NA 899
ID2 1 NA 127
ID2 1 NA 127
ID2 2 1.54 127
...
ID2 16 0.74 127
ID3 1 NA 631
ID3 2 -0.48 631
...
ID3 35 0.25 631
...
ID80459
변수 설명 :
advence
: 매일의 발전;
nb_event:
각 ID
.
다음 명령으로 advance
및 그룹화하고 싶습니다 nb_event
.
cut.advance <- cut(advance, breaks = c(-Inf, -0.5, -0.25, -0.1, 0, 0.02, 0.05, 0.15, 0.3, 0.5, 1, Inf), right = FALSE)
cut.nb <- cut(nb_event, breaks = c(1, 500, 1000, 5000, 15000, 20000, 50000, Inf), right = FALSE)
그런 다음 그룹에 advance
따라 각 그룹의 이벤트를 계산하는 피벗 테이블을 만드는 방법 은 nb_event
무엇입니까?
예상 결과 (표에서 상대 이벤트 날짜 수) :
cut.nb
cut.advance |1-500 501-1000 1001-5000 5k-15k 15k-20k 20k-50k more 50k
|
More -50% |
-50 to -25% |
-25 to -10% |
-10 to 0% |
Unchange |
0 to 2% |
2% to 5% |
5% to 15% |
15% to 30% |
30% to 50% |
50% to 100% |
More 100% |
rws <- levels(cut.advance)
cols <- levels(cut.nb)
new_table <- matrix(0,length(rws),length(cols))
new_table[cbind(match(cut.advance, rws), match(cut.nb, cols))] <- 1
dimnames(new_table) <- list(rws, cols)
new_table
이 levels
주장을 통해 가능한 모든 컷을 나열 할 수 있습니다. 우리는 지정 advance
하는 상처를 rws
, 우리의 행로 사용하기 위해 우리를 생각 나게하기 cols
위해 nb_event
.
0으로 새 행렬을 만듭니다.
재미있는 부분은 사용하여 행 열 조합의 모든 일 개의 할당되어 cbind
하고 match
. 무슨 일이 일어나고 있는지 확인하려면 이러한 함수를 하나씩 실행해야합니다 (예 :) match(cut.advance, rws)
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다