데이터 프레임 ( Data frame )
데이터 프레임은 숫자형 벡터 ,문자형 벡터 등
서로 다른 형태의 데이터를 2차원 데이터 테이블 형태로 묶을 수 있는 자료구조이다.
데이터프레임 만들기
data,frame() 함수를 이용하여 만든다. ciry <- c("Seoul","Tokyo","Washington") #문자로 이루어진 벡터 rank <- c(1,3,2) #숫자로 이루어진 벡터 city.info <- data.frame(city, rank) #데이터프레임 생성 city.info #city,info의 내용 출력 |
데이터프레임에서 데이터를 벡터로 추출하기
df[["Temp"]] , df[[2]] , df$age
데이터 프레임 추출
df[2], df["age"]
벡터생성인자 : stringAsFactor = T ( 기본 값 T )
True 이면 문자열을 factor로 저장하고 False 이면 char 형태로 저장
iris 데이터 셋
데이터프레임을 다루는 방법을 연습하기 위해 R에서 제공하는 데이터 셋
150그루의 붓꽃에 대해 4개의 분야의 측정 데이터와 품종 정보를 결합하여 만든 데이터셋
iris 데이터 출력해보기
iris # 전체 데이터 출력 |
iris[,c(1:2)] #1,2열의 모든 데이터 iris[,c(1,3,5)] #1,3,5열의 모든 데이터 iris[,c("Sepal.Length",Specoes")] #1,5 열의 모든 데이터 iris[1:5,] #1~5행의 모든 데이터 iris[1:5,c(1,3)] #1~5행의 데이터 중 1,3 열의 데이터 |
행렬(matrix) , 데이터프레임의 내용 확인
rownames() | 행의 이름을 출력한다. |
colnames() | 열의 이름을 출력한다. |
dim() | 행과 열의 개수를 출력한다. |
nrow() | 행의 개수를 출력한다. |
ncol() | 열의 개수를 출력한다. |
head() | 시작부분에 있는 일부데이터(5개)의 내용을 출력한다. |
tail() | 끝부분에 있는 데이터 중 일부를 출력한다. |
str() | 매트릭스, 데이터프레임의 요약 정보를 출력한다. |
unique() | 그룹(종류)의 값이 저장된 벡터에서 중복을 제외하고 그룹 확인한다. |
table() | 그룹(종류)의 값이 저장된 벡터에서 각 그룹별로 몇 개의 관측치가 존재하는지 출력한다 ( 도수분포표 ) |
행렬(matrix), 데이터프레임 다루기
colSums() | 열별 합계를 출력한다. |
rowSum() | 행별 합계를 출력한다. |
colMeans() | 열별 평균을 출력한다. |
rowMeans() | 행별 평균을 출력한다. |
t() | 행방향과 열방향을 변환한다. |
subset() | 조건에 맞는 행을 추출한다. |
class() | 자료구조를 확인한다. |
is.matrix() | 행렬(matrix) 여부를 확인한다. |
is.data.frame() | 데이터프레임 여부를 확인한다. |
subset() 함수 예시
IR <- subset(iris, Species=="setosa")
# IR 변수에 iris 중 Species 가 "setosa" 인 것들만 추출해서 담아라
# 품종 열의 값이 "setosa"인 열만 추출하라는 의미이다.
행렬(matrix)와 데이터프레임에 대한 산술연산 주의점
a 행렬과 b 행렬을 더하는 연산을 하면 동일 위치에 있는 값들 끼리 더하는 연산으로 실행된다.
단 , 행렬간 산술연산을 하려면 두 매트릭스의 크기(행과 열의 개수)가 같아야 한다.
행렬과 데이터프레임의 자료구조 변환
* 자료구조를 같게 변환해줘야 연산을 할 수 가있다.
#행렬을 데이터 프레임으로 변환 st <- data.frame(state.x77) head(st) class(st) #데이터프레임을 행렬로 변환 iris.m <- as.matrix(iris[,1:4]) head(iris.m) class(iris.m) |
파일 데이터 읽기/쓰기
파일 형식 변환
R에서는 .xlsx 포맷의 엑셀파일을 직접 읽을 수도 있지만,
보통 .csv 포맷의 엑셀 파일을 많이 이용하므로 이에 대해 연습하기로 한다.
엑셀에서 해당 데이터 파일을 열고 [파일] 메뉴에서 [다른 이름으로 저장]을 선택한후, 저장할 [파일 형식]을 'CSV'(쉼표로분리하는 파일형식) 로 바꾸어 저장하여 R에서 사용한다.
파일 데이터 읽기
setwd("D:/path...") #작업 폴더 지정 air <- read.csv("airquality.csv", header=T) #.csv 파일 읽기 head(air) # 상위데이터만 추출 ( 미리보기 ) |
파일 데이터 쓰기
setwd("D:/path...") #작업 폴더 지정 my.iris <- subset(iris, Species='Setosa') #Setosa 품종 데이터만 추출 write,csv(my.iris, "my_iris.csv",row.names=F) #csv 파일에 저장하기 |
header = T 는 읽어올 파일의 첫 번째 줄은 값이 아닌 열의 이름이라는 뜻이다.
실제데이터는 두 번째 줄부터이다.
만일 첫 번째 줄이 열의 이름이 아닌 값으로 시작을 한다면 header=F 와 같이 지정하면 된다.
na.strings='a'('a' 저장된 문자열들은 NA로 저장)
특정 문자열은 결측값 처리하게된다.
변수이름 부여하기
names(df1) <- c("id","name","gender"....)
특정 변수이름만 변경
names(df1)[7] <- "blood"
txt 파일 불러오기
txt 파일은 read.table() 함수 이용
header=FALSE 기본 설정
read.table("c:/data/adsp_name.txt",header=T,sep=";") read.table() header 옵션이 기본 F로 고정 ( txt 파일은 header 를 변수이름으로 사용하지 않는 것이 기본) sep은 변수간 구분이 세미콜론,빈칸,등이 있을 때 사용한다 ( 위 예시는 ; 로 구분 ) |
apply() 함수
반복 작업이 필요한 경우에는 반복문을 적용하면 되는데, 반복 작업의 대상이 메트릭스나 데이터프레임의 행 또는 열 인 경우는 for 문이나 while 문 대신에 apply() 함수를 이용할 수 있다.
R 은 처리 속도의 문제 때문에 for 문이나 while 문보다는 apply() 함수를 권장하고있다.
apply( 데이터셋 , 행/열방향 지정, 적용 함수) |
매개변수의 의미
- 데이터셋
반복 작업을 적용할 대상 매트릭스나 데이터프레임의 이름을 입력한다. - 행/열방향 지정
행방향 작업의 경우 1, 열방향 작업의 경우 2를 지정한다. - 적용 함수
반복 작업의 내용을 알려주는 것으로 , R 함수나 사용자 정의 함수를 지정한다.
apply() 함수 적용
apply(iris[,1:4], 1 , mean) #row 방향으로 평균을 구하는 함수 적용 apply(iris[,1:4], 2, mean) #col 방향으로 평균을 구하는 함수 적용 |
조건의 맞는 데이터의 위치 찾기
score <- c(76 , 84, 69, 50, 95, 60, 82, 71, 88, 84) # 데이터 입력 which(score==69) # 성적이 69 인 학생은 몇 번째에 있나 3을 반환 which(score>=85) # 성적이 85 이상인 학생은 몇 번째에 있나 5와 9를 반환 max(score) # 최고 점수는 몇 점인가 95를 반환 which.max(score) # 최고 점수는 몇 번째에 있나 5를 반환 min(score) # 최저 점수는 몇 점인가 50을 반환 which.max(score) # 최저 점수는 몇 번째에 있나 4를 반환 |
'Data Science > R' 카테고리의 다른 글
[R] 그래프 시각화 ( 산점도 scatter plot, scatter graph) (0) | 2020.06.15 |
---|---|
[R]. 그래프 시각화 ( 사분위수 , 히스토그램 , 상자그림 ) (0) | 2020.06.11 |
[R]. 그래프 시각화 ( 도수분표표 , 막대그래프 , 원그래프 ) (0) | 2020.06.11 |
[R] R , R studio 설치 및 한글 깨짐 해결법 (0) | 2020.06.10 |
[R] 기본 요약 정리 ( 연산 , 자료형 , vector , factor , list ) (0) | 2020.05.12 |