정렬 된 요인의 수준을 높이거나 낮추는 방법은 무엇입니까? (다음 단계와 동일한 요소를 만드십시오)

Frikster

순서가 지정된 요인 A와 B의 목록이 2 개 있으며 둘 다 수천 개의 항목을 포함하고 약 30 개 수준의 동일한 순서 척도를 가지고 있습니다. A의 항목이 B의 동일한 위치에있는 항목보다 한 수준 위 또는 아래에있는 항목과 같거나 같은지 확인하고 싶습니다.

이 척도가 숫자이면 순서가 지정된 인수를 숫자 값으로 변환 한 후 다음과 같은 작업을 수행합니다.

table(A==B || A==(B+1) || A==(B-1))

그러나 물론 '+'는 요인에 의미가 없습니다. 그래서 나는 무엇을합니까? 거대한 중첩 if 문을 작성할 수도 있고, 순서에 따라 순서대로 숫자를 숫자로 변경하여 순서가 지정된 인수를 숫자로 변환 할 수도 있습니다 ...하지만 이것들은 내가 무언가에 대한 로터리 (그리고 긴) 솔루션처럼 보입니다. d는 쉽다고 가정합니다 : 정렬 된 요인의 수준을 어떻게 늘리거나 줄입니까?

만약 내가 가지고 있다면

X<-ordered("b",levels=c("a","b","c"))

현재 수준을 높여 X[1]동등하게 만드는 방법은 "c"무엇입니까?

사이드 노트 : 물론, 위의 첫 번째 예에서는 척도의 하단과 상단에있는 요소를 고려해야하지만, 제 질문에 대한 답변을 받으면 쉽게 알아낼 수있을 것 같습니다. .

Frikster

그것을하는 방법을 알아 냈다. 누군가가 실제로 이것을 알아내는 데 도움이 된 매우 유용한 답변을 게시했지만 갑자기 도움이되지 않고 슬프게 삭제되었습니다. 나는 실제로 그 / 그녀에게 신용을주고 싶었습니다.

내 OP의 예를 들어, 다음을 수행하면 X [1]이 "c"가되는 순서가 지정된 인수를 얻습니다.

 ordered(sapply(X,function(i){levels(i)[which(levels(i) == X[1]) + 1][1]}),levels=c("a","b","c"))

물론이 코드를 수정하여 정렬 된 요소의 특정 요소가 변경되는 수준 수를 변경하고이 코드를 수정하여 정렬 된 요소의 어떤 요소가 변경되는지 변경할 수도 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관