2017-03-01 2 views
2

R 신참있는 간단한 데이터 테이블 여러 미국 가구 (NumHH)의 수를 갖는다 (DT) (레지던스)빈도 표

NumHH Residence 
6 AK 
4 AL 
7 AR 
6 AZ 
1 CA 
2 CO 
2 CT 
1 AK 
4 AL 
6 AR 
3 AZ 
1 CA 
6 CO 
3 CT 
5 AL 

로 사용하여(),

with(DT, table(NumHH, Residence)) 
내가 원하는 것에 가까이 테이블 얻을 수 있습니다

:

 Residence 
NumHH AK AL AR AZ CA CO CT 
    1 1 0 0 0 2 0 0 
    2 0 0 0 0 0 1 1 
    3 0 0 0 1 0 0 1 
    4 0 2 0 0 0 0 0 
    5 0 1 0 0 0 0 0 
    6 1 0 1 1 0 1 0 
    7 0 0 1 0 0 0 0 

하지만 거주 당 여러 범위의 빈도를 제공하는 표가 필요합니다. 내가 할 경우에만 수 있어요 -

  1. with() : 나는 시도했다

      Residence 
    NumHH  AK AL AR AZ CA CO CT 
        One  1 0 0 0 2 0 0 
        Two_Four 0 2 0 1 0 1 2 
        OverFour 1 1 2 1 0 1 0 
    

    :

    ##Frequency of ranges per State 
    One <- DT$NumHH <=1        ##Only 1 person/household 
    Two_Four <- ((DT$NumHH <=4) - (DT$NumHH <=1)) ##2 to 4 people in Household 
    OverFour <- DT$NumHH >4       ##More than 4 people in HH 
    

    이상적으로, 결과는 같을 것이다 : 주파수는 이런 식으로 계산 한 번에 하나의 범위는 "with()"와 같습니다 (예 : with(DT, table (One, Residence))). 그러면 상태별로 거짓 행과 참 행이 표시됩니다.

  2. data.frames은 각 상태 ("AK", "AL", "AR"등)의 이름을 묻지 만, with()은 이미 알고 있습니다.

  3. 나는 또한 ddply을 시도했지만 각 계산의 목록이 있습니다 (각 상태에 대해 50 개의 열에 원하는 3 개의 레이블이 지정된 행이 아니라 4 개의 열에 150 개의 레이블이없는 행이 있음). 따라서 분명히 올바르게하지는 않습니다.

모든 도움을 주시면 대단히 감사하겠습니다.

답변

3

사용 ?cuttable을 사용하기 전에 그룹을 설정하려면 :

with(dat, table(NumHH=cut(NumHH, c(0,1,4,Inf), labels=c("1","2-4",">4")), Residence)) 
#  Residence 
#NumHH AK AL AR AZ CA CO CT 
# 1 1 0 0 0 2 0 0 
# 2-4 0 2 0 1 0 1 2 
# >4 1 1 2 1 0 1 0 
+0

감사합니다, @thelatemail을. 나는 with()를 사용하여 간단하게 유지할 수 있었지만, 'cut in default'오류가 발생했다. 'x'는 숫자 여야한다. ' R Newbie는 NumHH가()를 사용하여 이전의 한 변수에서 숫자가 될 수있는 이유를 이해하지 못합니다. 그러나이를 간격으로 구분하지는 않습니다. – Uzay26

+0

@ uzay26 NumHH 변수가 숫자가 아닙니다. as.numeric로 먼저 변환하십시오. – thelatemail