ㅇ벡터 Show 대부분의 프로그래밍은 스칼라가 가장 작은 데이터 단위 하지만 R에서는 가장 작은 데이터는 벡터. R에서 1이라는 값은 정수 스칼라 1이 아니라 벡터 1임. 원소 한개 만 있는 벡터 이는 r이 통계를 위해 만들어졌기 때문 ㅇ데이터프레임 여러 개의 벡터가 모여서 하나의 데이터프레임을 구성 통계에서 변수가 모여 집합자료가 되듯이 R에서는 벡터가 모여 데이터프레임을 구성 변수 - 범주형 변수 - 명목형 변수 - 순서형 변수 - 수치형 변수 - 이산형 변수 - 연속형 변수 벡터 - character(문자열) - factor(순서형 변수와 명목형 변수 모두) - integer(이산형변수) - numeric(연속형 변수) ㅇ함수 c() : 벡터를 만드는 함수 is() : 벡터 종류 확인 as() : as.factor(), as.integer() 해당 벡터로 만들어줌 factor(x, ordered=T); ordered 인자의 논리값에 따라 오름차순, 내림차순으로 순서를 정할 수 있음 factor(c("남","여","여","남"), levels=c("남","여","소녀")) a <- c(1L, 2L, 3L) ; 숫자뒤에 L을 붙이면 number가 아니라 interger로 인식 ㅇ빅테이터를 다루게 된다면 integer와 numeric은 반드시 구분해야. 왜냐하면 CPU는 부동소수점보다 정수의 연산을 훨씬 더 빠르게 하기 때문. 부동 소수점 연산은 GPU에서 빠르게 처리. R에서도 GPU를 통한 부동소수점 연산 가능 ㅇ데이터프레임: r에서 가장 인기 있는 데이터 객체, 벡터의 모음으로 만들어짐 DF<- data.frame(a1, a2, a3); 주의할 점은 데이터프레임에 들어갈 벡터들의 길이(원소 개수)가 반드시 같아야함 DF <- data.frame(count=a1, food=a2, meanCount=a3); data.frame에 벡터를 넣을 때 이름을 넣어주면 원하는 변수명으로 만들 수 있음 *str()함수: 어떤 변수가 있는지 알고 싶을때 사용. 객체의 구조를 알려줌 DF$height; 데이터프레임 객체에 $를 붙이고 불러오고 싶은 변수의 이름을 적으면, 해당 변수(벡터)만 선ㅌ택할 수 있음 mean(DF$height); 바로 함수에 넣을 수도 있고, Height <- DF$height; 다른 객체에 저장할 수도 있음 height 변수가 7번째 열에 있으니 DF[[7]] 로도 해당 벡터를 불러올 수 있음 단 여기서 DF[7]은 height 데이터 프레임을 불러오게됨 ㅇ여러개 변수도 선택 가능 DF[c(6,7)] 또는 DF[(c("bloodtype","height")], DF[,7], DF[2,], DF[2,1]; 변수가 혹은 관측값, DF[,"height"] DF[,c(6,7)] 은 데이터프레임이고, DF[,7]은 벡터임. 따라서 여러 개를 가져올때는 객체 종류가 바뀌므로 한 개 변수를 가져오면서 이 방법을 사용하는 것은 비추천 * attach[DF]; 함수를 사용하면 검색 목록에 해당 데이터프레임이 올려짐 이렇게 하면, height라고만 해도 바로 변수로 접근 가능. 다만 이미 있는 객체 중에서 겹치는 객체가 있는지 살펴야하고, 이렇게 불러온 height는 DF와 상관 없는 별도 객체임 1. 벡터 1 2벡터와 리스트는 R의 기본 자료구조라 데이터 분석에 자주 사용되는 기본 자료구조에 친숙해지면 여러모로 장점이 많다. 가장 많이 사용되는 자료구조는 논리형(logical), 정수형(integer), 부동소수점형(double), 문자형(character)가 있다. 원자벡터는 동일한 자료형을 한곳에 모아 높은 것으로 각 원자는 자료형과 저장모드가 동일하다고 볼 수 있다. 물론 스칼라(scalar)는 길이가 1을 갖는 원자다. 원자벡터를 생성하는 기본 연산자는
1.1. 벡터 색인(Indexing, 인텍싱)벡터에서 특정 원소를 참조하거나 뽑아내는 것을 인덱싱(indexing)이라고 한다. 원소를 참조하거나 뽑아낼 때 사용되는 기본문법은 꺾쇠 괄호(
1.2. 자료형 강제변환(coersion)자료형 강제변환은 R이 갖는 가장 큰 장점 중의 하나다. 특히, 정수형과 부동소수점형 자료변환에 대해서 큰 스트레스가 없는데 R에서 강제변환기능을 통해 이를 자체적으로 해결해 준다. 또한 비율을 구할 때 논리형 벡터가 자동으로 정수형으로 변환되어 1과 0을 이용하여 쉽게 구할 수 있다. 자료형 강제변환은 벡터 내부에 이질적인 원소들이 갖춰졌을 때 자동으로 동일한 원소들이 되도록 변환되는 위계가 다음과 같이 존재한다.
자료형 강제변환 위계에 대한 사례로 부동소수점과 문자형이 동일한 벡터에 입력되면, 동일한 자료형을 갖춰야 되는 벡터 입장에서 자료변환 위계구조에 따라 모두 문자형으로 변환이 된다.
2. 리스트(list)앞선 벡터 정의가 상당히 경직된다고 느낄 때가 있다. 즉, 벡터 길이가 동일하지 않거나 각 벡터가 동일한 자료구조를 갖지 않는 경우가 있다. 이런 경우 리스트가 필요하다. 리스트는 실제로 벡터 그 자체인데, 원자벡터는 아니다.
2.1. 리스트(list) 인덱싱리스트 내부 색인 인덱싱하는 방법은 다음과 같은 세가지 방법이 있다.
3. 벡터화 연산 3루프를 대신하여 벡터화 연산(Vectorized Operations)을 수행하게 되면 구문이 간결해지고 속도 향상도 R에서 기대할 수 있다.
4. 리스트 칼럼 44.1 레고를 통해 본 R 자료 구조 5레고를 통해 살펴본 R 자료구조는 계산가능한 원자 자료형(논리형, 숫자형, 요인형)으로 크게 볼 수 있다. R에서 정수형과 부동소수점은 그다지 크게 구분을 하지 않는다. 동일 길이를 갖는 벡터를 쭉 붙여넣으면 자료구조형이 데이터프레임으로 되고, 길이가 갖지 않는 벡터를 한 곳에 모아넣은 자료구조가 리스트다. 데이터프레임이 굳이 모두 원자벡터만을 갖출 필요는 없다. 리스트를 데이터프레임 내부에 갖는 것도 데이터프레임인데 굳이 구별하자면 티블( 리스트-칼럼 자료구조가 빈번히 마주하는 경우가 흔한데… 대표적으로 다음 사례를 들 수 있다.
데이터프레임이 티블(tibble) 형태로 되어 있으면 다음 작업을 나름 수월하게 추진할 수 있다.
|