맛동산

데이터프레임(Dataframe) 기초 본문

머신러닝/R

데이터프레임(Dataframe) 기초

오지고지리고알파고포켓몬고 2017. 3. 26. 17:51

# 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

'머신러닝 > R' 카테고리의 다른 글

논리연산자, ifelse, table  (0) 2017.03.26
stringr  (0) 2017.03.26
리스트(List) 기초  (0) 2017.03.26
배열(Array) 기초  (0) 2017.03.26
매트릭스(Matrix) 기초  (0) 2017.03.26
Comments