최대 삼각형 공분산 행렬에서 최대 값이 발생하는 행과 열을 찾아야합니다. 그런 다음 전체 행과 열을 누락 된 행으로 대체 할 수 있습니다.최대 값이 sas에서 발생하는 열과 행 값을 저장하는 방법
답변
R을 사용하면 더 쉽게 만들 수 있지만 SAS에서는 이것이 가능합니다 (IML이 아닌 - 개인적으로 IML에 대해 잘 모름).
먼저 가상 삼각 행렬을 만듭니다.
DATA test;
INPUT v1 v2 v3 v4 v5 v6 v7;
DATALINES;
0.13 . . . . . .
0.21 0.30 . . . . .
0.31 0.52 0.79 . . . .
0.05 0.11 0.25 0.18 . . .
0.77 0.93 0.81 0.51 0.02 . .
0.96 0.09 0.45 0.36 0.14 0.29 .
0.55 0.67 0.71 0.92 0.44 0.38 0.01
RUN;
각 행의 최대 값을 가져옵니다 :
DATA test;
SET test;
rowmax = max(v1,v2,v3,v4,v5,v6,v7);
RUN;
을 그리고, 트랜스 데이터 세트 :
PROC TRANSPOSE DATA=test OUT=test PREFIX=v;
RUN;
을 지금 열 최대 값 수 :
DATA test;
SET test;
colmax = max(v1,v2,v3,v4,v5,v6,v7);
RUN;
수정을 원래 방향으로 돌아 가기 :
PROC TRANSPOSE DATA=test OUT=test;
ID _NAME_;
RUN;
마지막으로, 불필요한 값 삭제 :
DATA test;
SET test;
IF _N_=8 THEN rowmax=.;
RUN;
을 그리고 데이터 구조를 보여주는 인쇄 :
_NAME_ v1 v2 v3 v4 v5 v6 v7 rowmax
v1 0.13 . . . . . . 0.13
v2 0.21 0.30 . . . . . 0.30
v3 0.31 0.52 0.79 . . . . 0.79
v4 0.05 0.11 0.25 0.18 . . . 0.25
v5 0.77 0.93 0.81 0.51 0.02 . . 0.93
v6 0.96 0.09 0.45 0.36 0.14 0.29 . 0.96
v7 0.55 0.67 0.71 0.92 0.44 0.38 0.01 0.92
colmax 0.96 0.93 0.81 0.92 0.44 0.38 0.01 .
:
PROC PRINT DATA=test;
RUN;
이 당신에게 다음과 같은 출력을 제공을 유일한 나머지 부분은 논리입니다 (그래서, 7 열의 모든 열 중에서 가장 큰 값을 포함하고 모든 행 중에서 가장 큰 값을 포함하는 7 행 중). 그런 다음 당신은 이것을 할 수 있습니다. ZEROFILL되는 열을 알아내는 시작 :
DATA test;
SET test;
index=_N_;
ARRAY v v1-v7;
IF _N_=8 THEN DO i=1 TO 7;
IF v[i]=max(v1,v2,v3,v4,v5,v6,v7) THEN DO;
CALL SYMPUT('rightcol',i);
END;
END;
IF _N_~=8 THEN v["&rightcol"]=0;
DROP i;
RUN;
을 지금 바로 데이터 집합을 정렬 행을 얻기 위해 (내가 위의 인덱스를 설정 그 이유는).
PROC SORT DATA=test;
BY DESCENDING rowmax;
RUN;
지금, 당신은 작동 N = 1을 수행하여 해당 행에 걸쳐 제로 채울 수 있습니다.
DATA test;
SET test;
ARRAY v v1-v7;
IF _N_=1 THEN DO i=1 TO 7;
v[i]=0;
END;
DROP i;
RUN;
그리고 설정을 다시 분류 :
PROC SORT DATA=test;
BY index;
RUN;
을 그리고 당신은이 출력으로 끝낼 : 당신은 반복해야하는 경우
_NAME_ v1 v2 v3 v4 v5 v6 v7 rowmax index
v1 0.00 . . . . . . 0.13 1
v2 0.00 0.30 . . . . . 0.30 2
v3 0.00 0.52 0.79 . . . . 0.79 3
v4 0.00 0.11 0.25 0.18 . . . 0.25 4
v5 0.00 0.93 0.81 0.51 0.02 . . 0.93 5
v6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.96 6
v7 0.00 0.67 0.71 0.92 0.44 0.38 0.01 0.92 7
colmax 0.96 0.93 0.81 0.92 0.44 0.38 0.01 . 8
, 단지 값을 닦아 코드를 조정할 colmax와 rowmax에서.
이것은 훌륭하지만 실제로 통계를 계산하기 위해 열과 행이 필요하며 다음과 같이 열과 행 값을 행렬 명령에 입력 할 수 있습니다. 'sigma_split [row, column] = 0' 여기서 sigma_split은 최대 값이 나타나는 곳을 찾으려는 행렬입니다. 또한, 나는 이것이 R에서 훨씬 더 쉽다는 것에 동의한다. 내가 원한 것과 평행 한 R의 코드는 이것이다. 'xm <-which (sigma.split == max (sigma-split), arr.ind = TRUE)' – TylerHunt
다차원 배열을 사용하여이를 수행 할 수 있습니다. 나는 SAS 스킬에 조금 녹슬었고 지금은 직장에서 꽝 닫혀 버렸지 만, 기회가 있다면 나는 그걸로 엉망진창을 볼 수있을 것이다. – TARehman
- 1. 열과 행
- 2. 문자열의 열과 행 검색
- 3. 행 최대 값을 0으로 바꾸기
- 4. 최대 값을 가진 단일 행 반환
- 5. PHP에서 배열의 열과 행의 최대 수를 찾는 방법
- 6. SQL 선택 - 행 - 최대 갖는 극대화 값이 나는 특정 컬럼에 대한 최대 값을 갖는 행을 선택합니다
- 7. 산술 오버플로, 어떤 열과 행 식별?
- 8. 최대 값이 동일한 튜플을 찾기위한 SQL 쿼리
- 9. 열의 셀 값을 기준으로 DataGrid 열과 행 인덱스 찾기
- 10. 함수의 최대 값이 나타나는 목록에서 값을 찾는 방법
- 11. 최대 절전 모드를 사용하여 배열 값을 저장하는 방법
- 12. 값을 단일 변수에 저장하는 방법
- 13. 입력 값을 저장하는 방법?
- 14. cgi.parse_multipart에서 값을 저장하는 방법
- 15. Treeview 값을 저장하는 방법
- 16. int 값을 char에 저장하는 방법
- 17. 날짜로 그룹화 된 행 그룹의 최대 값을 반환하는 방법
- 18. MySQL ENUM 옵션 값이 최대 행 크기에 영향을 줍니까?
- 19. jqGrid - 링크를 클릭하여 행 셀을 저장하는 방법
- 20. WPF - 격자의 열과 행 크기 조정
- 21. 검색 값을 저장하는 가장 좋은 방법
- 22. SAS에서 요약 변수를 만드는 쉬운 방법
- 23. SAS에서 누락 된 값을 0으로 처리하십시오.
- 24. 값이 고유 한 열과 충돌하는 경우 무시합니다.
- 25. 행 ID의 최대 값은?
- 26. 엑셀 : 열에 값이 발생하는 횟수를 카운트하십시오.
- 27. asp.net에서 mysql 데이터베이스에 Javascript 값을 저장하는 방법
- 28. 최대 값을 가진 열이있는 행 선택 - 날짜 범위에서
- 29. 조인 된 테이블에서 최대 열 값을 선택하십시오. 최대 값이 여러 배인 경우 다른 열의 최대 값을 가진 값을 선택하십시오.
- 30. DotNetNuke 6.0 데이터베이스에 값을 저장하는 방법
스택 오버플로에 오신 것을 환영합니다! 작은 예제 데이터 세트를 추가하여 정확히 원하는 것을 보여주십시오. 전후 이미지가 도움이 될 것입니다. – BellevueBob
SAS-IML을 사용하고 있습니까, 아니면 기본 SAS입니까? – Joe
행과 열을 말할 때, 가장 높은 값이 발생하는 곳과 둘 중 하나의 유일한 교차점을 찾거나, 어떤 행이 가장 높은 값을 갖고 어떤 열이 가장 높은 값을 가졌는지를 개별적으로 알아내는 것을 의미합니까? 모든 열, 각각)? – TARehman