■■ Data Language ■■/R
[R3.3] 데이터프레임 - 생성 및 수정, 메타
디비랑
2016. 11. 13. 18:13
반응형
/*********************************************************************************************************
-- Title : [R3.3] 데이터프레임 - 생성 및 수정, 메타
-- Reference : hrd-net
-- Key word : r data frame dataframe setwd getwd data.frame apply subset merge 데이터프레임 데이터 프레임
nrow ncol
*********************************************************************************************************/
-- R
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | # ******************************************** # -- 데이터프레임 생성 (create) # ******************************************** # -- Vector이용 객체 생성 no = c(1,2,3) name = c("hong", "lee", "kim") pay = c(150,250,300) df_vemp = data.frame(NO=no, Name=name, Pay=pay) #컬럼명 지정 df_vemp # -- matrix이용 객체 생성 m = matrix( c(1,"hong",150, 2, "lee", 250, 3, "kim", 300), 3, by=T) # 행우선, 3개 리스트 생성 df_memp = data.frame(m) df_memp # -- txt파일 이용 객체 생성 getwd() setwd("C:\\Rwork\\Part-I") df_txtemp = read.table('emp.txt', header=T, sep="") # 제목있음, 공백구분 df_txtemp class(df_txtemp) # -- csv파일 이용 객체 생성 df_csvtemp = read.csv('emp.csv', header=T) # 제목있음, 컴마구분 df_csvtemp class(df_csvtemp) # -- data.frame() 사용하여 생성 df_dirct = data.frame( x=c(1:5), y=seq(2,10,2), z=c('a','b','c','d','e') ) df_dirct # ******************************************** # -- 데이터프레임 수정 (alter) # ******************************************** # -- 컬럼명이 없는 파일인 경우 컬럼명 추가하여 생성 name = c("사번","이름","급여") df_colemp = read.csv('emp2.csv', header=F, col.names=name) df_colemp # -- 컬럼명 변경 name = c("사번","이름","급여") df_nocolnm = read.csv('emp2.csv', header=F) names(df_nocolnm) <- c("dog","cat") # 필드수랑 안 맞으면 NA 처리됨 names(df_nocolnm) names(df_nocolnm)[3] <- c("tiger") # 특정 필드만 수정 names(df_nocolnm)[names(df_nocolnm) == "cat"] <- c("야옹이") df_nocolnm # -- 컬럼 추가 df_nocolnm$new_c1 = NA # NA로 신규 컬럼 추가 df_nocolnm df_nocolnm[5] = "kk" # 컬럼명 자동 할당 df_nocolnm df_nocolnm[100] = "kk" # 컬럼 추가시 다음 인덱스 사용 v = 2:6 df_nocolnm$new_c2 = v # 임의이 값으로 컬럼 추가 df_nocolnm df_nocolnm$new_c3 = df_nocolnm$dog # 다른 컬럼을 통해 신규 컬럼 추가 df_nocolnm # -- 컬럼 삭제 df_nocolnm$new_c3 = NULL df_nocolnm df_nocolnm[5] = NULL df_nocolnm df_nocolnm[4:5] = NULL # 여러 컬럼 동시 삭제 df_nocolnm # ******************************************** # -- 데이터프레임 Subset 생성 (create) # ******************************************** x = c(1:5) y = c(6:10) df2 = data.frame(x,y) df2 df_x1 = subset(df, x>=3) # x가 3이상인 레코드 대상 df_x1 df_y1 = subset(df, y<=8) # y가 8이하인 레코드 대상 df_y1 df_xy1 = subset(df, x>=2 & y>8) # 2개 조건이 참인 레코드 대상 df_xy1 df_xy2 = subset(df, x<=2 | y>8) # 2개 조건이 OR인 레코드 대상 df_xy2 # ******************************************** # -- 데이터프레임 확인 (meta) # ******************************************** # -- 로우수, 컬럼수 nrow(df_vemp) # number of row count ncol(df_vemp) # number of column count # -- 데이터프레임 확인 class(df_colemp) # -- 데이터프레임 컬럼 확인 names(df_colemp) colnames(df_colemp) # -- 데이터프레임 구조 확인 names(df_colemp) # 변수명(컬럼) attributes(df_colemp) # names(), class, row.names str(df_colemp) # 데이터 구조보기 # ******************************************** # -- apply() 함수 적용 # ******************************************** r1 = c(100,80,90) r2 = c(90,80,75) r3 = c(86,78,95) df_data = data.frame(c1=r1, c2=r2, c3=r3) df_data # -- apply() 적용 apply(df_data, 1, min) # 열 단위 함수 적용 - 86 78 75 apply(df_data, 2, min) # 행 단위 함수 적용 - 80 75 78 apply(df_data, 1, var) # 행 단위 분산 apply(df_data, 2, sd) # 열 단위 표준편차 | cs |
-- 소스 파일
반응형