R 언어 기본 공부 2

# 테이블 객체 생성
table(rpois(35,5)) #rpois => 포아송 분포 (Poisson Distribution)
2 3 4 5 6 7 8 
6 2 9 5 9 3 1 
table(rbinom(100,10,0.5))
 2  3  4  5  6  7  8 10 
 5 10 23 20 22 11  8  1 
#ftable () 함수: 다양한 객체(요인,리스트,데이터프레임,분할표 작성)
ftable(Titanic,row.vars=1:3)
                   Survived  No Yes
Class Sex    Age                   
1st   Male   Child            0   5
             Adult          118  57
      Female Child            0   1
             Adult            4 140
2nd   Male   Child            0  11
             Adult          154  14
      Female Child            0  13
             Adult           13  80
3rd   Male   Child           35  13
             Adult          387  75
      Female Child           17  14
             Adult           89  76
Crew  Male   Child            0   0
             Adult          670 192
      Female Child            0   0
             Adult            3  20
ftable(Titanic, row.vars=1:2)
             Age      Child     Adult    
             Survived    No Yes    No Yes
Class Sex                                
1st   Male                0   5   118  57
      Female              0   1     4 140
2nd   Male                0  11   154  14
      Female              0  13    13  80
3rd   Male               35  13   387  75
      Female             17  14    89  76
Crew  Male                0   0   670 192
      Female              0   0     3  20
a =c('k','l','p','le','pa')
b =c('c','d','w','le','pa')
c =c('k','l','p','le','pa')
df = data.frame(name=a,gender=b,blood=c)
df
namegenderblood
k c k
l d l
p w p
lelele
papapa
table(df$name)
 k  l le  p pa 
 1  1  1  1  1 
table(df$blood)
 k  l le  p pa 
 1  1  1  1  1 
# 시계열 객체 생성 : ts() 함수를 이용
(t <- ts(1:10, frequency=4, start=c(2001,2)))
ERROR while rich displaying an object: Error in repr_matrix_generic(obj, "\n%s%s\n", sprintf("|%%s\n|%s|\n", : formal argument "cols" matched by multiple actual arguments

Traceback:
1. FUN(X[[i]], ...)
2. tryCatch(withCallingHandlers({
 .     if (!mime %in% names(repr::mime2repr)) 
 .         stop("No repr_* for mimetype ", mime, " in repr::mime2repr")
 .     rpr <- repr::mime2repr[[mime]](obj)
 .     if (is.null(rpr)) 
 .         return(NULL)  
 .     prepare_content(is.raw(rpr), rpr)
 . }, error = error_handler), error = outer_handler)
3. tryCatchList(expr, classes, parentenv, handlers)
4. tryCatchOne(expr, names, parentenv, handlers[[1L]])
5. doTryCatch(return(expr), name, parentenv, handler)
6. withCallingHandlers({
 .     if (!mime %in% names(repr::mime2repr)) 
 .         stop("No repr_* for mimetype ", mime, " in repr::mime2repr")
 .     rpr <- repr::mime2repr[[mime]](obj)
 .     if (is.null(rpr)) 
 .         return(NULL)
 .     prepare_content(is.raw(rpr), rpr)
 . }, error = error_handler)
7. repr::mime2repr[[mime]](obj)
8. repr_markdown.ts(obj)
9. repr_ts_generic(obj, repr_markdown.matrix, ...)
10. repr_func(m, ..., rows = nrow(m), cols = ncol(m))
Qtr1Qtr2Qtr3Qtr4
2001 1 2 3
2002 4 5 6 7
2003 8 910
str(t)
 Time-Series [1:10] from 2002 to 2005: 1 2 3 4 5 6 7 8 9 10
set.seed(100)
z <- ts(matrix(rnorm(300),100,3), start=c(1961,1), frequency=12)
class(z)

<ol class=list-inline> <li>‘mts’</li> <li>‘ts’</li> <li>‘matrix’</li> </ol>

head(z)
Series 1Series 2Series 3
-0.50219235-0.3329234 0.02817177
0.13153117 1.3631137 -0.35670341
-0.07891709-0.4691473 0.85262638
0.88678481 0.8428756 0.51336525
0.11697127-1.4579937 1.01820300
0.31863009-0.4003059 -1.02147908
plot(z)

output_14_0

# yearly time series : 2001년 부터 36년 간의 자료를 시계열 객체로 만들고 plot을 그린다

x <- ts(rnorm(36),start=c(2001))
print(x)
Time Series:
Start = 2001 
End = 2036 
Frequency = 1 
 [1] -1.85544523 -1.01856471 -1.04511109 -0.65128765  0.38268265  1.03189971
 [7]  0.13107497  0.37719173 -1.88769508  0.52021940  0.85915316 -0.80248866
[13] -0.49196052 -0.21095432 -0.46367661  0.29947957 -0.60547383 -0.43901213
[19] -0.72075363  0.78080503 -1.22228428  0.89119404  0.25392284 -0.06581643
[25]  0.20146603  2.47770051  0.47175279  1.32619808  0.66859849 -0.13739441
[31] -1.41117170  1.20036310  0.29909011  0.45622688  0.43807844 -0.21502114
plot(x, xaxt="n")

output_16_0

tsp = attributes(x)$tsp
dates = seq(as.Date("2001-01-01"),by="year",along=x)
axis(1,at = seq(tsp[1],tsp[2],along=x), labels =format(dates, "%Y"))
Error in axis(1, at = seq(tsp[1], tsp[2], along = x), labels = format(dates, : plot.new has not been called yet
Traceback:


1. axis(1, at = seq(tsp[1], tsp[2], along = x), labels = format(dates, 
 .     "%Y"))
x <- ftable(mtcars[c("cyl","vs","am", "gear")])
x
          gear  3  4  5
cyl vs am              
4   0  0        0  0  0
       1        0  0  1
    1  0        1  2  0
       1        0  6  1
6   0  0        0  0  0
       1        0  2  1
    1  0        2  2  0
       1        0  0  0
8   0  0       12  0  0
       1        0  0  2
    1  0        0  0  0
       1        0  0  0
x <- table(mtcars[c("cyl","vs","am","gear")])
x
, , am = 0, gear = 3

   vs
cyl  0  1
  4  0  1
  6  0  2
  8 12  0

, , am = 1, gear = 3

   vs
cyl  0  1
  4  0  0
  6  0  0
  8  0  0

, , am = 0, gear = 4

   vs
cyl  0  1
  4  0  2
  6  0  2
  8  0  0

, , am = 1, gear = 4

   vs
cyl  0  1
  4  0  6
  6  2  0
  8  0  0

, , am = 0, gear = 5

   vs
cyl  0  1
  4  0  0
  6  0  0
  8  0  0

, , am = 1, gear = 5

   vs
cyl  0  1
  4  1  1
  6  1  0
  8  2  0
ftable(x, row.vars=c(2,4))
        cyl  4     6     8   
        am   0  1  0  1  0  1
vs gear                      
0  3         0  0  0  0 12  0
   4         0  0  0  2  0  0
   5         0  1  0  1  0  2
1  3         1  0  2  0  0  0
   4         2  6  2  0  0  0
   5         0  1  0  0  0  0
# 객체 다루기
a <- matrix(c(1:10),2,5)
a
1 3 5 7 9
2 4 6 8 10
is.data.frame(a)

FALSE

is.matrix(a)

TRUE

a %*% t(a) # %*% 행렬 객체에 적용되는 연산자임
165190
190220
b <- as.data.frame(a)
str(b)
'data.frame':	2 obs. of  5 variables:
 $ V1: int  1 2
 $ V2: int  3 4
 $ V3: int  5 6
 $ V4: int  7 8
 $ V5: int  9 10
b %*% t(b)
Error in b %*% t(b): 수치 또는 복소수형태의 행렬 혹은 벡터 인자가 요구됩니다
Traceback:
as.matrix(b) %*% t(as.matrix(b))
165190
190220