# 행렬 : 2차원 이상 넘어가는 것을 r에서 행렬로 씀
# 행과 열로 나누어 사용
# rbind : 행단위로 결합
# cbind : 열단위로 결합
# merge : 동일한 key 값 기준 결합
# 배열 :  행렬이랑 벡터 확장 구조

var1 <- c(1,2,3)
var2 <- c(4,5,6)
var3 <- c(7,8,9)
mat1 <- rbind(var1, var2, var3)
mat2 <- cbind(var1, var2, var3)
mat1
mat2

colnames(mat1) <-c("A", "B", "C") # 하나 이상의 데이터 담을 때 벡터 
mat1

# 벡터는 하나의 자료형 담기 때문에 문자랑 숫자랑 같이 벡터에 넣으면 숫자도 문자가 됨
xx<-c('a',1,'b')
xx
yy<-c(1,2,3)
yy

# 데이터 프레임 : 다양한 자료형으로 모아서 구성된 행렬
no <- c(1,2,3,4)
name <- c("이순신","홍길동","장보고","강감찬")
korean <- c(990,85,100,95)
english <- c(100,90,85,80)

student <- data.frame(No=no, Name = name, KOR = korean,ENG = english )   # 데이터 프레임 만들기 : data.frame(필드명, 값)
student

# 대괄호 조건 : [행 조건식, 열 조건식]
student[1, ]  # 행 조건에 값이 있고, 열 조건 값 없으면 모든 열 / 1 = 첫행만 보여주세요


student[-3, ]

# 리스트(list) : key 와 values를 쌍으로 묶어서 씀 / java의  map, 
member <- list(name = "홍길동", address = "korea",tel="010-0000-0000")
member

member$name   # 키의 값을 가져오고 싶을 때 $이름 적으면 속하는 값 가져옴

member$age = 30
member

# 배열 : 행렬(matrix)은 2차원만 가능하지만, 배열 그 이상은 가능

# 3행 4열의 2차원 배열 생성
# dimension으로 행과 열의 차수를 결정해 줌
# 열단위로 들어감
array(1:12, dim=c(3,4))

x <- array(1:6, dim=c(3,2))
x
x[1][1]
dim(x) # 행과 열을 나타냄

# class () : 자료형을 추출하는 함수
class(c(1,6))  # c(1,6) -> 자료형 숫자임을 출력시킴

class(matrix(c(1,2)))

# is.numeric : 안에 있는 타입이 numeric이냐? 맞으면 true 아니면 false
is.numeric(c(1,2))
is.numeric(c("a","b"))
is.character(c("a","b"))

# as.자료형() : 강제 형변환
as.numeric(c("1","2","3"))

# integer(int), num : 실수, chr : 문자형, cplx: 복소수, factor: 팩터
# 결측값 : 임의대로 누락했거나 범위 벗어난 값  NULL, NA(Not a Number), NaN(숫자가 아니다.)

1:7  # factor

c(1,2,3,4,5)
c(1:5)

seq(from = 1, to = 5, by = 2) 3 순열

rep(c(1:3), times = 2)   # 123을 두번 반복
rep(c(1:3),each=2)    # 11 22 33 이렇게 됨

x <- c(1,2,3,4,5,6)
length(x)
#벡터는 요소로 접근할 수 있다.
x[1]
#대괄호연산자는 두개 쓸 수 없다.
#행과열의값을 갖고있지않다. 행렬이 아니다. 엄밀히 말하면 1차원이다. 따라서 대괄호 안에 하나의 요소만 있어야한다. 그래서 아래와 같이 쓰면 에러가 난다. 
#x[1,2,3]
#x[1,2]
# (-)하면 그 값을 빼고 가져와라
x[-1]

y <- c(10,20,30,40,50)
y
#y[1,2,3] # ->에러,  첫번째 요소 두번재 요소 세번재 요소 가져오고 싶으면 다음 줄 
y[c(1,2,3)] # -> 하나 이상의 문자 가져올 때 벡터로 값을 붙여서
y[-c(1,2,3)]

# 배열 생성 함수 :  array(), matrix() - 2차원 행렬,
# 행 중심 rbind, 열 중심 cbind  -> 배열 만드는 함수

#?array
x <- array(data = 1:5, dim =c(2,4)) # data 1-5까지 배열 만들어라 생략가능, c(2,4) -> 벡터에 2와 4 즉 2행 4열
# 배열의 크기보다 값(data)가 작을 때 빈 곳을 반복해서 채워짐. 
x

# 기본적으로 같은 타입을 묶는다. 숫자는 숫자, 문자는 문자. 숫자와 문자가 같이 있으면 다 문자로 취급한다.
# 데이터 프레임 : 여러 데이터를 묶어서 사용. 즉 여러 자료형의 벡터를 묶어서 사용할 때 좋음
name <- c("홍길동","장보고","이순신")
age <- c(17,21,19)
blood.type <- c("A","O","B")
people <- data.frame(name, age, blood.type)
people
# 혈액형처럼 범주에 속하면 factor
str(people) # 데이터 프레임 형태 보는 거 

+ Recent posts