2017-12-21 4 views
0

학생용 등급 (학년), 학생이보고 한 1-5 값, 과제가 얼마나 쉬운가 (수준), 비율 각 1-5 값 (백분율)를보고 학생, 예는 '쉬움'(레벨 1)은 "N"를 제외한 모든 등급에서 누락 된 것을R : 그룹화 된 변수 및 빈도의 데이터 행렬을 만듭니다.

grade <- c('A','A','A','A','B','B','B','B','C+','C+','C+','C-','C-','C-','D','D','N','N') 
level <- c(2,3,4,5,2,3,4,5,2,3,4,2,3,4,2,3,1,3) 
percentage <- c(0.8403361,12.605042,12.605042,0.8403361,2.5210084, 
       23.5294118,10.9243697, 2.5210084, 4.2016807, 11.7647059, 
       5.8823529, 0.8403361, 4.2016807, 1.6806723, 0.8403361, 
       2.5210084, 0.8403361, 0.8403361) 

df <- data.frame(grade, level, percentage) 

grade level percentage 
A  2 0.8403361 
A  3 12.605042 
A  4 12.605042 
A  5 0.8403361 
B  2 2.5210084 
B  3 23.5294118 
B  4 10.9243697 
B  5 2.5210084 
C+  2 4.2016807 
C+  3 11.7647059 
C+  4 5.8823529 
C-  2 0.8403361 
C-  3 4.2016807 
C-  4 1.6806723 
D  2 0.8403361 
D  3 2.5210084 
N  1 0.8403361 
N  3 0.8403361 

참고.

지금은

  A   B   C+   C-   D   N 
1   0   0   0   0   0 0.8403361 
2 0.8403361 2.5210084 4.2016807 0.8403361 0.8403361   0 
3 12.605042 23.5294118 11.7647059 4.2016807 2.5210084 0.8403361 
4 12.605042 10.9243697 5.8823529 1.6806723   0   0 
5 0.8403361 2.5210084   0   0   0   0 

는이 같은 데이터 프레임을 변환 할 수있는 R 코드를 도와 줄 수, 어떤 모양을한다, 매트릭스와 같은 방법으로이 데이터를 입력해야합니까? 주파수 테이블에서 누락 될 수있는 경우에도 R 코드에서 "1"수준을 찾습니다. "1"수준과 0 %를 사전에 테이블에 도입해야합니까? 아니면 어떻게 든 자동화 할 수 있습니까?

+1

[긴 형식에서 넓은 형식으로 데이터를 재구성하는 방법] (https://stackoverflow.com/questions/5890584/how-to-reshape-data-from-long-to-wide-format) 또는 https : //stackoverflow.com/questions/9617348/reshape-three-column-data-frame-to-matrix-long-to-wide-format – jogo

답변

0

(ifelse 확인하여) 당신은 reshape2 패키지 dcast를 사용할 수 있습니다 tidyr

library(reshape2) 
dcast(df, formula="level~grade", fill=0, value.var="percentage") 
0

당신이 spread를 사용하여이 문제를 해결 할 수 있습니다

library(tidyr) 
spread(data = df, key = grade, value = percentage, fill = 0) 

# level   A   B  C-  C+   D   N 
# 1  1 0.0000000 0.000000 0.0000000 0.000000 0.0000000 0.8403361 
# 2  2 0.8403361 2.521008 0.8403361 4.201681 0.8403361 0.0000000 
# 3  3 12.6050420 23.529412 4.2016807 11.764706 2.5210084 0.8403361 
# 4  4 12.6050420 10.924370 1.6806723 5.882353 0.0000000 0.0000000 
# 5  5 0.8403361 2.521008 0.0000000 0.000000 0.0000000 0.0000000 

fill = 0이 누락 된 값이 충전되어 있는지 확인합니다 기본 값 대신 0 대신 NA

관련 문제