데이터 프레임 처리¶
데이터 프레임 생성 1 : 파일에서
fileEncoding = "euc-kr"
setwd("C:/Users/KIIXXI/Documents/khu")
read.csv("test.csv")
item | price | sales |
---|---|---|
<fct> | <int> | <int> |
풍선 | 100 | 200 |
펌프 | 3000 | 5 |
테이프 | 300 | 20 |
플래카드 | 20000 | 1 |
색종이 | 150 | 100 |
x <- c(1,2,3,4,5)
y <- c(10,20,30,40,50)
z <- c("M","M","M","F","F")
d <- data.frame(x,y,z);
d
# 이렇게 만들수 도 있다.
c <- data.frame(x=c(1,2,3),y=c(10,20,30),z=c("M","M","F"))
c
x | y | z |
---|---|---|
<dbl> | <dbl> | <fct> |
1 | 10 | M |
2 | 20 | M |
3 | 30 | M |
4 | 40 | F |
5 | 50 | F |
x | y | z |
---|---|---|
<dbl> | <dbl> | <fct> |
1 | 10 | M |
2 | 20 | M |
3 | 30 | F |
id <- c(1,2,3,4,5)
factory <- c("평택지부1","평택지부2","안산지부","인천지부","원주지부")
sales <- c(70,90,80,85,87)
d <- data.frame(id, factory,sales)
d
str(d)
id | factory | sales |
---|---|---|
<dbl> | <fct> | <dbl> |
1 | 평택지부1 | 70 |
2 | 평택지부2 | 90 |
3 | 안산지부 | 80 |
4 | 인천지부 | 85 |
5 | 원주지부 | 87 |
'data.frame': 5 obs. of 3 variables:
$ id : num 1 2 3 4 5
$ factory: Factor w/ 5 levels "안산지부","원주지부",..: 4 5 1 3 2
$ sales : num 70 90 80 85 87
- 문자형이 factor 형태로 저장되었다.
d <- data.frame(id, factory, sales, stringsAsFactors = FALSE); d
str(d)
id | factory | sales |
---|---|---|
<dbl> | <chr> | <dbl> |
1 | 평택지부1 | 70 |
2 | 평택지부2 | 90 |
3 | 안산지부 | 80 |
4 | 인천지부 | 85 |
5 | 원주지부 | 87 |
'data.frame': 5 obs. of 3 variables:
$ id : num 1 2 3 4 5
$ factory: chr "평택지부1" "평택지부2" "안산지부" "인천지부" ...
$ sales : num 70 90 80 85 87
id <- c(1,2,3,4,5)
factory <- c("평택1","평택2","안산","인천","원주")
type <- c("공장","공장","오피스","오피스","오피스")
sales <- c(70,90,80,85,87)
d <- data.frame(id, factory,type,sales,stringAsFactors=FALSE)
str(d)
'data.frame': 5 obs. of 4 variables:
$ id : num 1 2 3 4 5
$ factory: Factor w/ 5 levels "안산","원주",..: 4 5 1 3 2
$ type : Factor w/ 2 levels "공장","오피스": 1 1 2 2 2
$ sales : num 70 90 80 85 87
d$type <- as.factor(d$type)
str(d)
'data.frame': 5 obs. of 5 variables:
$ id : num 1 2 3 4 5
$ factory : Factor w/ 5 levels "안산","원주",..: 4 5 1 3 2
$ type : Factor w/ 2 levels "공장","오피스": 1 1 2 2 2
$ sales : num 70 90 80 85 87
$ stringAsFactors: logi FALSE FALSE FALSE FALSE FALSE
id <- 1:7
name <- c("김원경","박찬웅","조해선","김선영","이화영","양영욱","최필선")
gender <- c("F","M","F","F","F","M","M")
sales <- c(1000,2000,1500,2200,1700,2000,2200)
d <-data.frame(id,name,gender,sales,stringsAsFactors = FALSE)
d
id | name | gender | sales |
---|---|---|---|
<int> | <chr> | <chr> | <dbl> |
1 | 김원경 | F | 1000 |
2 | 박찬웅 | M | 2000 |
3 | 조해선 | F | 1500 |
4 | 김선영 | F | 2200 |
5 | 이화영 | F | 1700 |
6 | 양영욱 | M | 2000 |
7 | 최필선 | M | 2200 |
d.col <- d$name
d.col
d.col <- d[,2]
d.col
d.col <- d[,"name"]
d.col
- '김원경'
- '박찬웅'
- '조해선'
- '김선영'
- '이화영'
- '양영욱'
- '최필선'
- '김원경'
- '박찬웅'
- '조해선'
- '김선영'
- '이화영'
- '양영욱'
- '최필선'
- '김원경'
- '박찬웅'
- '조해선'
- '김선영'
- '이화영'
- '양영욱'
- '최필선'
- 같은 결과가 나온다.
- 벡터가 아닌 데이터 프레임으로 나오게 하려면 dplyr 패키지의 select()함수를 사용한다.
library(dplyr)
d %>% select(name)
name |
---|
<chr> |
김원경 |
박찬웅 |
조해선 |
김선영 |
이화영 |
양영욱 |
최필선 |
d.cols <- d[,c(2,3,4)]
d.cols
d.cols <- d[, 2:4]
d.cols
d.cols <- d[, c("name","gender","sales")]
d.cols
name | gender | sales |
---|---|---|
<chr> | <chr> | <dbl> |
김원경 | F | 1000 |
박찬웅 | M | 2000 |
조해선 | F | 1500 |
김선영 | F | 2200 |
이화영 | F | 1700 |
양영욱 | M | 2000 |
최필선 | M | 2200 |
name | gender | sales |
---|---|---|
<chr> | <chr> | <dbl> |
김원경 | F | 1000 |
박찬웅 | M | 2000 |
조해선 | F | 1500 |
김선영 | F | 2200 |
이화영 | F | 1700 |
양영욱 | M | 2000 |
최필선 | M | 2200 |
name | gender | sales |
---|---|---|
<chr> | <chr> | <dbl> |
김원경 | F | 1000 |
박찬웅 | M | 2000 |
조해선 | F | 1500 |
김선영 | F | 2200 |
이화영 | F | 1700 |
양영욱 | M | 2000 |
최필선 | M | 2200 |
- 같은 결과가 나온다.
- dplyr 패키지의 select 함수 사용.
library(dplyr)
d %>% select(name, gender, sales)
name | gender | sales |
---|---|---|
<chr> | <chr> | <dbl> |
김원경 | F | 1000 |
박찬웅 | M | 2000 |
조해선 | F | 1500 |
김선영 | F | 2200 |
이화영 | F | 1700 |
양영욱 | M | 2000 |
최필선 | M | 2200 |
d.row <- d[2,] # 특정행 선택
d.row
d.element <- d[2,3] # 특정 원소 선택
d.element
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
2 | 2 | 박찬웅 | M | 2000 |
'M'
d.man <- d[d$gender=="M",] # gender라는 컬럼이 M 인 레코드들만 가져와라
d.man
d.woman <- d[d$gender=="F",] # gender라는 컬럼이 F 인 레코드들만 가져와라
d.woman
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
2 | 2 | 박찬웅 | M | 2000 |
6 | 6 | 양영욱 | M | 2000 |
7 | 7 | 최필선 | M | 2200 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
1 | 1 | 김원경 | F | 1000 |
3 | 3 | 조해선 | F | 1500 |
4 | 4 | 김선영 | F | 2200 |
5 | 5 | 이화영 | F | 1700 |
d[d$sales>2000,]
d[(d$gender=="F")&(d$sales>2000),] # and
d[(d$gender=="F")|(d$sales>2000),] # or
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
4 | 4 | 김선영 | F | 2200 |
7 | 7 | 최필선 | M | 2200 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
4 | 4 | 김선영 | F | 2200 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
1 | 1 | 김원경 | F | 1000 |
3 | 3 | 조해선 | F | 1500 |
4 | 4 | 김선영 | F | 2200 |
5 | 5 | 이화영 | F | 1700 |
7 | 7 | 최필선 | M | 2200 |
d.man <- d[which(d$gender=="M"),]
d.man
d.woman <- d[which(d$gender=="F"),]
d.woman
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
2 | 2 | 박찬웅 | M | 2000 |
6 | 6 | 양영욱 | M | 2000 |
7 | 7 | 최필선 | M | 2200 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
1 | 1 | 김원경 | F | 1000 |
3 | 3 | 조해선 | F | 1500 |
4 | 4 | 김선영 | F | 2200 |
5 | 5 | 이화영 | F | 1700 |
d[which(d$sales>2000),]
d[which((d$gender=="F")&(d$sales>2000)),]
d[which((d$gender=="F")|(d$sales>2000)),]
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
4 | 4 | 김선영 | F | 2200 |
7 | 7 | 최필선 | M | 2200 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
4 | 4 | 김선영 | F | 2200 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
1 | 1 | 김원경 | F | 1000 |
3 | 3 | 조해선 | F | 1500 |
4 | 4 | 김선영 | F | 2200 |
5 | 5 | 이화영 | F | 1700 |
7 | 7 | 최필선 | M | 2200 |
d.man <- subset(d,gender=="M") # gender 컬럼의 내용이 "M"인 행만,
d.man
subset(d,gender=="F")
d.woman
subset(d,gender=="F",select=c(name,gender))
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
2 | 2 | 박찬웅 | M | 2000 |
6 | 6 | 양영욱 | M | 2000 |
7 | 7 | 최필선 | M | 2200 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
1 | 1 | 김원경 | F | 1000 |
3 | 3 | 조해선 | F | 1500 |
4 | 4 | 김선영 | F | 2200 |
5 | 5 | 이화영 | F | 1700 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
1 | 1 | 김원경 | F | 1000 |
3 | 3 | 조해선 | F | 1500 |
4 | 4 | 김선영 | F | 2200 |
5 | 5 | 이화영 | F | 1700 |
name | gender | |
---|---|---|
<chr> | <chr> | |
1 | 김원경 | F |
3 | 조해선 | F |
4 | 김선영 | F |
5 | 이화영 | F |
subset(d, sales>2000)
subset(d, gender == "F" & sales > 2000)
subset(d, gender == "F" | sales > 2000)
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
4 | 4 | 김선영 | F | 2200 |
7 | 7 | 최필선 | M | 2200 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
4 | 4 | 김선영 | F | 2200 |
id | name | gender | sales | |
---|---|---|---|---|
<int> | <chr> | <chr> | <dbl> | |
1 | 1 | 김원경 | F | 1000 |
3 | 3 | 조해선 | F | 1500 |
4 | 4 | 김선영 | F | 2200 |
5 | 5 | 이화영 | F | 1700 |
7 | 7 | 최필선 | M | 2200 |
subset(d, gender == "F" | sales > 2000, select = c(name,gender))
name | gender | |
---|---|---|
<chr> | <chr> | |
1 | 김원경 | F |
3 | 조해선 | F |
4 | 김선영 | F |
5 | 이화영 | F |
7 | 최필선 | M |
#install.packages("dplyr")
library(dplyr)
d.man <-d%>% filter(gender == "M")
d.man
d.woman <- d %>% filter(gender == "F")
d.woman
id | name | gender | sales |
---|---|---|---|
<int> | <chr> | <chr> | <dbl> |
2 | 박찬웅 | M | 2000 |
6 | 양영욱 | M | 2000 |
7 | 최필선 | M | 2200 |
id | name | gender | sales |
---|---|---|---|
<int> | <chr> | <chr> | <dbl> |
1 | 김원경 | F | 1000 |
3 | 조해선 | F | 1500 |
4 | 김선영 | F | 2200 |
5 | 이화영 | F | 1700 |
d %>% filter(sales > 2000)
d %>% filter(gender == "F" & sales >2000)
d %>% filter(gender == "F" | sales>2000)
id | name | gender | sales |
---|---|---|---|
<int> | <chr> | <chr> | <dbl> |
4 | 김선영 | F | 2200 |
7 | 최필선 | M | 2200 |
id | name | gender | sales |
---|---|---|---|
<int> | <chr> | <chr> | <dbl> |
4 | 김선영 | F | 2200 |
id | name | gender | sales |
---|---|---|---|
<int> | <chr> | <chr> | <dbl> |
1 | 김원경 | F | 1000 |
3 | 조해선 | F | 1500 |
4 | 김선영 | F | 2200 |
5 | 이화영 | F | 1700 |
7 | 최필선 | M | 2200 |
d<- read.csv("test.csv")
d
item | price | sales |
---|---|---|
<fct> | <int> | <int> |
풍선 | 100 | 200 |
펌프 | 3000 | 5 |
테이프 | 300 | 20 |
플래카드 | 20000 | 1 |
색종이 | 150 | 100 |
d[(d$sales>5),]
item | price | sales | |
---|---|---|---|
<fct> | <int> | <int> | |
1 | 풍선 | 100 | 200 |
3 | 테이프 | 300 | 20 |
5 | 색종이 | 150 | 100 |
d[(d$price>=300 & d$sales>=5),]
item | price | sales | |
---|---|---|---|
<fct> | <int> | <int> | |
2 | 펌프 | 3000 | 5 |
3 | 테이프 | 300 | 20 |
c <- d[(d$price>=300 & d$sales>=5),]
c
item | price | sales | |
---|---|---|---|
<fct> | <int> | <int> | |
2 | 펌프 | 3000 | 5 |
3 | 테이프 | 300 | 20 |
'Study of GifMan > R of GifMan' 카테고리의 다른 글
4. 데이터 분리(sample, split, ifelse) (0) | 2019.08.06 |
---|---|
3. 데이터프레임 처리 2 (행제외, 열 제외, 행추가, 열추가, 병합, rename) (0) | 2019.08.06 |
1. Feature Engineering(Scaling, Binnig, Creating Feature, as.Date, Creating Dummy) (0) | 2019.08.06 |
5. 집단 차이 분석(일표본,이표본 평균(t.test), 일표본 비율(binom.test), 이표본 비율( prop.test), (0) | 2019.08.06 |
4. 상관분석 ( 상관계수(spearman, pearson), 검정( cor.test), 시각화(symnum, corrgram)) (0) | 2019.08.06 |