v <- unlist(x) # key 제거
a <- list(1:5)
b <- list(6:10)
list 객체에 함수 적용
lapply(c(a,b),max) # list 반환
sapply(c(a,b),max) # vector 반환
# 산포도 : 분산 , 표준편차
# 모집단에 대한 분산 , 표준편차
# 분산 = sum((x-산술평균)^2)/n
# 표본에 대한 분산, 표준 편차 <- R
# 분산 = sum((x-산술평균&2))/n-1
>이러한 이유 때문에 값이 조금 다르게 나올 수 있다.
> subset - 특정 row / column을 선택 => 새로운 dataset 생성
x<-1:5
y<-6:10
z<-letters[1:5]
df <- data.frame(x,y,z)
#subset(x, subset, select, drop = FALSE, ...)
DataStructure
1) Vector - 동일한 자료형을 가지는 1차원 배열 구조.
install.packages('stringr') install.packages(url,repos=NULL) #현재 위치에 새로운 pakage를 설치
.libPaths()
library(stringr) #package memory upload
memory loading 패키지 확인
search()
색인(index) : 저장 위치
object[n]
a<- 1:50 a[c(10:15 , 30:35)] #여러 범위 지정
함수 이용
length(a) a[10:(length(a)-5)] a[seq(2,length(a),by = 2)]
특정 원소 제외(-)
a[-c(20:30)]
조건식
a[a>=10 & a<=30] a[a<=10 | a>=30] a[!(a>=10)]
m2 <- matrix(data = c(1:9),nrow=3,ncol=3,byrow=T) # row first m3 <- matrix(data = c(1:9),nrow=3,ncol=3,byrow=F) # column first
x<- 1:5 y<- 6:10 z<- 11:15 w<- c('r','r','r','r','r') m4 <- rbind(x,y) m4 <- rbind(m4,z) m4 <- rbind(m4,w)
m5 <- cbind(x,y,z,w)
matrix indexing
object[row,column]
m6<- matrix(data = c(1:9),nrow=3,ncol=3) m6 m6[2:3,1:2]
속성
m6[-2,] m6[-1,-1] m6[,-c(1,3)]
row, column 이름 지정
colnames(m6) <- c("one","two","three") m6[,'one'] m6[,'one':'two'] # x 불가능 m6[,1:2] # o
x<- matrix(1:12,nrow=4,ncol=3, byrow=T)
scala(0) * matrix(2) - 작은 차원이 큰 차원으로 들어가게 된다.
0.5 * x
vector(1) * matrix(2)
y<- 10:12 y+x x
matrix * matrix - 동일한 차원
x+x x*x
x t(x)
help("apply") apply(x,1,sum) apply(x,2,mean)
arr <- array(data=c(1:12),dim=c(3,2,2)) #3 - 2 - 2로 만들어준다. arr data() data("iris3") #3차원 data 불러오기 iris3 dim(iris3) # 꽃이 3개 종류 각각의 넓이,높이,등등 4개 50개씩 조사
array index
arr[,,1] iris3[,,1] iris3[,1,] iris3[,,3]
no <- 1:3 name <- c("홍길동","이순신","유관순") sal <- c(250,350,300)
emp <- data.frame( NO = no, Name = name ,Pay = sal) emp dim(emp) class(emp) mode(emp) #여러형의 자료형인 경우 list라 나온다.
pay <- emp$Pay mean(pay) sd(pay)
objects[row,column]
emp_row <- emp[c(1,3),] #특정행 추출출 emp[-2,] emp_row emp[2]
emp_txt <- read.table("emp.txt", header=T , sep="") #text 불러오기 emp_txt class(emp_txt) # dataframe
emp_csv <- read.csv("emp.csv") emp_csv class(emp_csv) # dataframe
sid <- 1:3 #학번 score <- c(90,85,83) #연속형 gender <- c('M','F','M')
student <- data.frame(SID=sid,Score=score,Gender=gender , stringsAsFactors = T) #false -> chr true-> factor
lst <- list('lee','이순신',35,'hong','홍길동',30)
key -> value
lst[[5]]
lst2 <- list(first= 1:5, second=6:10) lst2$first lst2$second lst2$first[3]
lst3 <- list(name=c('홍길동','김욱성'), age=c(33,27),gender=c('M','F')) lst3$name[1] mean(lst3$age)
lst4 <- list(one = c('one','two','three'), two = matrix(1:9,nrow=3), three=array(1:12,c(2,3,2)) ) lst4 lst4$one lst4$two lst4$three
multi_list <- list(r1=list(a=1,b=2,c=3), r2=list(10,20,30), r3=list(100,200,300) )
multi_list$r1$a
mat <- do.call(rbind,multi_list) mat
x<- list(1:10)
list -> vector
v <- unlist(x) # key 제거 a <- list(1:5) b <- list(6:10)
list 객체에 함수 적용
lapply(c(a,b),max) # list 반환 sapply(c(a,b),max) # vector 반환
1) 조건식 : row 기준
df2<-subset(df,x>=2)
2) select : column 기준
df3<-subset(df,select=c(x,z))
3) 조건식 + select
df4<-subset(df,x>2 & x<=4, select=c(x,z))
4) 특정 column 특정 값으로 subset
subset(df,z %in% c('a','c','e'))
subset(df,z in c('a','c','e')) X