데이터프레임(Dataframe) 기초
# 1) Vector이용 객체 생성
no <- c(1,2,3)
name <- c("hong", "lee", "kim")
pay <- c(150,250,300)
vemp <- data.frame(NO=no, Name=name, Pay=pay) #컬럼명 지정
vemp
# 2) matrix이용 객체 생성
m <- matrix(
c(1,"hong",150,
2, "lee", 250,
3, "kim", 300) ,3 ,by=T) # 행우선, 3개 리스트 생성
m
memp <- data.frame(m)
memp
# 3) txt파일 이용 객체 생성
setwd("D:/Rwork/Part-I")
txtemp <- read.table('emp.txt', header=T, sep="") # 제목있음(header), 공백구분(sep)
# sep 생략시 , 구분
txtemp
class(txtemp) # "data.frame"
# 컬럼명이 없는 파일인 경우
name <- c("사번","이름","급여")
read.csv('emp2.csv', header=F, col.names=name)
# apply('dataframe/matrix', 1/2, FUNCTION)
r1 <- c(100,80,90)
r2 <- c(90,80,75)
r3 <- c(86,78,95)
Data <-data.frame(r1=r1, r2=r2, r3=r3)
Data
apply(Data, 1, min) # 열 단위 함수 적용 - 86 78 75
apply(Data, 2, min) # 행 단위 함수 적용 - 80 75 78
# 서브셋 만들기 - subset(Data.Frame, 조건식)
x <- 1:5
y <- 6:10
df <- data.frame(xx=x, yy=y)
df
x1 <- subset(df, xx>=3) # x가 3이상인 레코드 대상
x1; class(x1)
y1 <- subset(df, yy<=8) # y가 8이하인 레코드 대상
y1
xy <- subset(df, xx>=2 | y<=6) # or -> 전체
xy
xy2 <- subset(df, xx>=2 & y<=6) # and -> 0
xy2
# Data join : 칼럼 값으로 기준으로 두 개의 프레임 연결
height <- data.frame(id=c(1,2), h=c(180,175))
weight <- data.frame(id=c(1,2), w=c(80,75))
user <- merge(height, weight)
user
# 특정문자 NA 처리(-, & 문자열을 NA로 처리)
student3 <- read.table(file="student3.txt", sep=" ", header=TRUE, # NA와 <NA>의 차이는 숫자와 문자의 차이인가
na.strings=c("-","&")) # 문자열 -> NA 처리
서브셋 subset 조인 join