일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- #jdbc #자바
- #자바 #스윙관련 함수 #API보고 정리했음
- #자바 #오라클 #연동
- #StringBuffer #자바 #
- #웹 #중요한 것
- #오라클 #계정 생성 #테이블 #생성 #조회 #추가
- #자바 #입출력
- #자바
- #자바 #파일 #함수
- #리뷰 #CSS #선택자
- #BigDecimal
- #함수 #VIEW #시퀀스 #INDEX
- #Web #웹 #jsp #servlet
- #자바 #오라클 #JDBC
- #오라클 #11g #테이블
- #함수 #키워드 #조인 #서브쿼리
- #스윙 #함수 #Swing
- #스프링 프레임 워크 #인코딩 #컨텍스트 #환경설정
- #돔 트리 #form 태그 #이스케이프문자 #시작태그 #form태그
- #오라클 #자바 #연동
- #웹 #정의 #5대 브라우저 #
- #자바 #입출력 #함수
- #Ajax #EL #JSTL
- #오라클 #용어 정리 #데이터 타입 #비교 연산자 #논리 연산자 #SELECT 문
- #제약 조건 #함수 #컬럼 변경 #테이블 변경& 삭제
- #HTML4.01또는 5의 차이 #parsing #웹브라우저 #form 태그 #태그 속성 #id #name
- #48일차 #한 내용 #요약
- #웹 #HTTP 프로토콜
- #프로그래밍 기초
- #오라클 #함수 #MAX() #MIN() #LPAD() #SUBSTR() #TO_CHAR() #복사 #지우기 #수정
- Today
- Total
IT journey
R-데이터 유형과 객체 간략히 살펴보기 본문
변수명
알파벳, 숫자, _, .로 구성되어있으며 만들 때에는 숫자나.으로 시작해서는 안됩니다.
변수값을 할당(데이터를 입력)할 때에는 <-나 = 를 씁니다.
데이터 유형
숫자형(numeric), 문자형(character), 논리형(logical) 등등 이 있습니다.
데이터 객체
데이터를 입력할 때는 함수 c()를 이용합니다.
객체는 R의 기본요소이며, R에서 다뤄지는 모든 것이 객체입니다.
벡터
스칼라
- R에서는 기본 데이터 타입은 벡터입니다. 그러므로 스칼라 데이터는 길이가 1인 벡터로 생각하면 됩니다.
- 1차원 값(1,2,...), NULL(초기화 되지 않은 변수), NA(Not Available, 데이터 값이 없음(즉, 결측치), 문자열, 진리 값, 팩터가 길이가 1인 벡터인 스칼라라고 생각하면 됩니다.
- 이에 대한 예는 아래와 같습니다.
a<-2
a
참고로, 문자열(character)은 '', ""로 묶은 문자를 말합니다.
진리 값(logical, 논리형)을 들어가기 전 논리 연산자를 다루었던 Python-자료형(리스트, 튜플)과 C언어-연산자 포스팅 글을 미리 보고 오시면 이해를 수월하게 하실 수 있습니다.😊
진리 값은 TRUE와 FALSE로 &,|,! 는 Python-자료형(리스트, 튜플)에서 처럼 &는 and 로 |는 or로! 는 not으로 연산할 수 있으며 &,|,! 는 진리값이 지정된 벡터 단위로 연산을 합니다.
그리고 &&, || 는 C언어-연산자 처럼 연산할 수 있으며 두 개의 진리값끼리 연산하기 위한 연산자입니다.
이에 대한 예는 아래와 같습니다.
c(TRUE,TRUE) & c(FALSE,TRUE)
c(TRUE,TRUE) && c(FALSE,TRUE)
벡터(1차원으로 배열된 구조)
- 한 데이터 유형으로 여러 개의 데이터를 저장한 구조입니다.
- 벡터 내부에 또 다른 벡터를 생성하게 되면 1차원의 벡터로 변경됩니다.
- 벡터의 각 데이터마다 이름 부여를 하고 색인을 이용해서 접근합니다.
- 데이터를 입력할 때는 함수 c()를 이용합니다.
- names() 함수를 이용하여 벡터의 이름을 부여합니다.
- 데이터 변환 규칙은 integer <double <character <list로 됩니다.
- 벡터의 구성요소를 구할 때는 typeof()를 씁니다.
- 벡터의 길이(벡터를 구성하고 있는 요소 개수)를 구할 때는 length 함수를 씁니다.
- 벡터의 인덱싱(Indexing)
파이썬에서는 0부터 수를 셌습니다. 하지만, R에서는 1부터 수를 셉니다.
일부분을 선택하여 가져오는 방법은 x[a]의 형태이며 정수형 벡터에 의한 인덱싱을 주의해서 하여야 합니다. 모두 양수이게 되면 지정된 위치의 자료 선택하지만 모두 음수의 경우에는 지정된 위치의 자료가 제외됩니다.
위에 대한 설명에 대한 예는 아래와 같습니다.
x<-c(FALSE,TRUE,TRUE) #논리형으로만 이루어진 백터
typeof(x) #벡터의 구성요소
y<-c(1L,5L,3L) #정수형으로만 이루어진 벡터*
names(y)<-c("one","two","three")
y
z<-c("a","b",c("a","b"))
length(z) #벡터의 길이
#인덱싱
ex <- c(4,8,12,16,20)
ex[c(1,3)]
ex[c(1,1,1)] #같은 위치 반복 지정 가능
ex[6] #지정한 위치가 벡터 길이보다 큰 경우
#참고로, 논리형 벡터에 의한 인덱싱도 가능합니다.
#TRUE가 있는 위치의 자료를 선택하며, 이것은 벡터가 비교에 의한 자료 선택에서 쓰입니다.
ex <- c(4,8,12,16,20)
ex[c(FALSE,TRUE,FALSE,TRUE,TRUE)]
요인
요인(factor)은 크게 4가지로 나누어집니다.
범주형 데이터를 표현하는 구조로 1차원 구조입니다.
- 범주형은 데이터를 미리 정해진 유형(레벨)로 분류를 합니다. 그에 대한 예로는 성별로 남자, 여자로 나누어집니다.
- 명목형은 데이터 간 크기 비교가 불가능한 경우를 말합니다.
- 순서형은 데이터 간 순서를 둘 수 있는 경우를 말합니다. 그에 대한 예로는 A, B, C, D, F학점을 말합니다.
- 수치형은 데이터를 숫자로 표현합니다.
이에 대한 예는 아래와 같습니다.
#범주형
result=factor("여자",c("남자","여자"))
result
nlevels(result) #level의 개수
#순서형
ordered("A",c("A","B","C","D","F"))
행렬(Martix)
-행과 열에 대해 알아봅시다.
- 행렬은 2차원 구조로 1차원 구조인 벡터에 dim(차원) 속성이 추가됩니다.
- 행렬의 구성요소는 같은 유형의 데이터로만 이루어져 있습니다.
- 행렬을 생성하는 방법은 2가지가 있습니다.
㉮ 행렬 matrix()를 이용하여 행과 열의 개수 nrow= 또는 ncol= 로 지정합니다.
지정하게 되면 자료는 열 기준으로 입력하기 때문에, 자료를 행 단위로 입력하기를 원한다면 옵션인 byrow=TRUE를 추가해야 합니다. byrow=FALSE로 하게 되면 열 기준으로 입력합니다.
㉯ 함수 dim()을 이용하면 됩니다.
- 행에 이름을 붙이고 싶을 때에는 rownames 함수를 쓰고 열에 이름을 붙이고 싶을 때에는 colnames 함수를 쓰면 됩니다.
- 각각의 차원에 해당하는 이름을 부여해주고 싶을 때에는 dinames을 쓰면 됩니다.
- 인덱싱은 3가지 방식 중 원하는 것을 선택해서 해주면 됩니다.
㉮ x[i,j] => 행렬 x의 i번째 행, j번째 열의 요소를 호출
㉯ x[i,] => 행렬 x의 i번째 행 전체 요소를 호출
㉰ x[,j] => 행렬 x의 j번째 열 전체 요소를 호출
- 위 설명과 관련된 예는 아래와 같습니다.
a=matrix(1:6,nrow=2,ncol=3)
a
b=matrix(1:6,nrow=2,ncol=3,byrow=TRUE)
b
rownames(a)<-c("one","two")
colnames(b)<-c("1","2","3")
ab=1:6
dim(ab)<-c(2,3)
dimnames(ab)<-list(c("one","two"),c("1","2","3"))
ab
ab[1,2]
ab[1,]
ab[,2]
ab[,1:2]
배열(array)
- 2차원 이상의 구조로, 구성요소는 같은 유형의 데이터입니다.
- 배열은 함수 array()와 함수 c()로 만듭니다.
- 각각의 차원에 해당하는 이름을 부여해주고 싶을 때에는 dinames을 쓰면 됩니다.
- 배열을 인덱싱을 할 때에는 차원의 수만큼의 첨자가 필요합니다.
- 위 설명과 관련된 예는 아래와 같습니다.
a=array(1:12,c(2,3,2))
a
dimnames(a)<-list(x=c("x1","x2"),y=c("y1","y2","y3"),z=c("z1","z2"))
a
a[,1,1]
a
데이터 프레임(Data Frame)
- 통계 데이터 세트에 가장 적합한 구조입니다.
- 표(행렬과 같은 2차원 구조) 형태로 저장 관리합니다.
- 하나의 열에는 같은 유형의 자료를 입력해야 하며 각각의 열에는 서로 다른 유형의 자료가 올 수 있습니다. 또한 각 열에는 관측값들을 저장하고 각 행에는 관측 단위 값을 저장해야 합니다.
- 데이터 프레임의 생성하려면 함수.data.frame()를 해야합니다.
- 데이터 구조를 확인하려면 str()를 해주어야 합니다.
- 데이터 프레임의 행 이름 변수 개수 확인하는 방법은 rownames()로, 열 이름 변수 개수 확인하는 방법은
함수 colnames(), names()를 써야 합니다.
- 열의 자료는 변수를 나타내며 이는 variable이라 불립니다.
- 변수의 개수를 확인하는 방법은 함수 length()입니다.
- 인덱싱에 대해 알아봅시다.
㉮ 열(변수) 선택
- df[[a]] 또는 df[a]의 형식은 벡터 a는 숫자형 혹은 문자형
- df[[a]] 의 형식은 한 변수의 선택하고 결과는 벡터
- df[a] 형식은 하나 또는 그 이상의 변수 선택하고 결과는 데이터 프레임
열(변수)선택은 벡터 형태로 선택하는 것이 일반적이며 df[[a]]의 형태가 더 많이 쓰입니다.
조금 더 활용하기 편한 방법은 $ 기호 사용하여 데이터 프레임의 이름$변수이름 으로 쓰입니다.
㉯ 행렬의 인덱싱 방법 사용
df[i,j]의 형태로, 선택된 변수가 하나이면 결과는 벡터이지만
선택된 변수가 하나 이상이면 결과는 데이터 프레임으로 나옵니다.
df1 = data.frame(x=c(5,10,15),y=c("a","b","c"))
df1
#입력된 문자열 벡터를 요인으로 변화시켜줍니다.
#요인은 level이 있는 순서형 척도로 활용이 가능했던 데이터입니다.
str(df1)
#문자열 벡터를 요인으로 변화하기 싫다면 함수 내에 stringsAsFactors=FALSE를 입력해주면 됩니다.
df2<-data.frame(x=c(5,10,15),y=c("a","b","c"),stringAsFactors=FALSE)
str(df2)
df3<-data.frame(a=c(5,6,7),b=c("x","y","z"))
df3
#열(변수) 선택
df3[1]
df3[[1]]
df3["a"]
df3[["a"]] #df3$a
#행렬의 인덱싱 방법 사용
df3[c(1,2),1]
df3[c(1,2),]
colnames(df3)
length(df3)
리스트(list)
- 가장 포괄적인 구조로 구성 요소(벡터, 배열, 데이터 프레임, 함수, 다른 리스트)는 서로 다른 데이터 타입의 데이터들이 연결되어 있는 구조입니다.
-데이터가 (key,value)의 구조로 저장되어 있습니다.
- 함수 list()를 이용해서 리스트를 생성하고 이름을 부여합니다.
- 리스트의 인덱싱은
- list [[a]] : list라는 리스트 a번째 값
- list[a] : list라는 리스트의 a번째 데이터 리스트
- list$a : list라는 리스트안에 a라는 필드의 값 참조
로 쓸 수 있습니다.
- 리스트의 장점으로는 산만하게 흩어진 정보를 간단히 묶기가 가능가 가능합니다.
많은 R 함수들의 수행결과가 리스트의 형태라 용이합니다. 리스트를 가지고 원하는 결과만 인덱싱해서 사용할 수 있습니다.
x<-list(a=c("one","two","three"),b=4:6,c=list(7:11),d=data.frame(x1=c("s1","s2"),x2=12:13))
x
x[1]
x[[1]]
str(x[1])
str(x[[1]])
#리스트 x의 3번째 요소를 데이터 프레임의 형태로 선택
x[[3]]
x[["c"]]
x$c
#리스트 x의 4번째 요소의 두번째 열을 데이터 프레임의 형태로 선택
x[[4]][2]
#리스트 x의 4번재 요소의 두 번째 열을 벡터 형태로 선택
x[[4]][[2]]
x$d$x2
몇 개의 유틸리티 함수만 다루어보겠습니다.
- head() : 데이터 앞 부분을 참조합니다.
- tail() : 데이터 뒤 부분을 참조합니다.
내장 데이터와 유틸리티 함수를 이용해보는 예를 만들어보겠습니다.
base 패키지 중 하나인 datasets에 데이터 프레임 iris가 있습니다.
(1)그 데이터를 구성하고 있는 변수와 관찰값의 개수를 확인하고 변수의 이름을 확인하는 예
(2) 함수 head()와 tail()를 이용하여 데이터 프레임 iris의 처음 세줄과 마지막 세줄을 출력하는 예
iris
str(iris)
colnames(iris)
head(iris,3)
tail(iris,3)