R/Data Analysis

[R Studio] R 기초 #2. 슬라이싱 / 연산 / 행렬∙배열∙리스트∙데이터프레임 / 데이터프레임 행열 이름지정∙추가, 값 추출 / 조건문(if-else, ifelse, for)

sohyunkimmm 2023. 6. 14. 17:03
728x90

 

R 프로그래밍 기초 #2.

 

1. 슬라이싱

#슬라이싱= 인덱스를 쭉 뽑는다
d <- c(1,2,3,4,"a","b","c","d")
d[1:4]
d[1:8]
d[5:8]
d[5:10] #없는값은 NA로 출력
length(d) #벡터- 길이 측정 가능

 

슬라이싱: 인덱스를 뽑는 것

- 없는 값은 NA로 출력

- 길이 측정 가능

 

 

 

2. 벡터 연산

#벡터- 연산 가능
b <- c(1,2,3,4)
b <- b+5
b
b <- b*10
b

#루트
sqrt(b)

#절대값
b <- c(-1, -2, -3, -4)
abs(b)

 

sqrt() 루트

 

abs() 절대값

 

 

 

b <- b*1.123
b

round(b, 1) #소숫점 반올림
mean(b) #평균
var(b) #분산
sd(b) #표준편차
min(b) #최소값
max(b) #최대값
median(b) #중앙값

 

round(a,1) 소숫점 첫째자리 까지 반올림

 

mean(), var(), sd() 평균,  분산, 표준편차

 

min(), max(), median() 최소값, 최대값, 중앙값

 

 

 

 

3. 행렬/배열/리스트/데이터프레임

#행렬(matrix)
matrix(c(1:9), nrow = 3, ncol = 3, byrow = T)

#배열(array); dim(차원)설정 해주어야함
array(c(1:8), dim = c(2,2,2))

#리스트(list); 파이썬 리스트와 조금 다른 형태
#다른것들을 묶을 수 있는 함수
list(name = "Sohyun", height = 167)

#데이터프레임(dataframe)
df <- data.frame(a = c(1, 2, 3, 4), 
                 b = c("a", "b", "c", "d"), 
                 c = c(10, 20, 30, 40))
df
summary(df) #python: describe()

행렬(matrix), 배열(array), 리스트(list)
데이터프레임(data.frame), summary(df)

 

행렬

matrix(값 , nrow = , ncol = , byrow = ) 

 

배열

array(값, dim = () )

 

리스트

list(key = 값, key = 값, … )

 

데이터프레임

df <- data.frame(a = c(), b = c(), c = c() )

summary(df) : 데이터프레임 안 내용 요약 (파이썬 = describe())

 

 

 

 

4. 데이터프레임 행∙열 이름 지정

#데이터 프레임 만들어서 행, 열 이름 지정
sales_data <- data.frame(ID = c(1, 2, 3, 4, 5, 6, 7, 8), 
                         화장품 = c(234, 561, 623, 46, 23, 126, 63, 122), 
                         식료품 = c(10, 20, 30, 40, 50, 60, 20, 10), 
                         의류 = c(23, 161, 73, 123, 663, 112, 623, 122), 
                         전자제품 = c(123, 251, 631, 1235, 622, 421, 512, 712))
sales_data <- sales_data[2:5]
sales_data
index = c("2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023")
sales_data <- data.frame(data = sales_data, row.names = index)
sales_data
colnames(sales_data) <- c("화장품", "식료품", "의류", "전자제품")

데이터프레임 생성
행(row), 열(col) 이름 지정

 

 

 

 

 

5. 데이터프레임 행∙열 추가

#방법1. '잡화'열 추가하기 
sales_data_jobhwa <- c(215, 612, 616, 123, 621, 251, 636, 342)
sales_data_total <- cbind(sales_data, sales_data_jobhwa)
sales_data_total
colnames(sales_data_total) <- c("화장품", "식료품", "의류", "전자제품", "잡화")
sales_data_total

#방법2. '문화'열 추가하기
sales_data_total$문화 <- c(153, 121, 231,235, 122, 221, 112, 212)
sales_data_total

#'2024' 행 추가하기
sales_data_total["2024",] <- c(152, 623, 251, 235,125, 212)
sales_data_total

summary(sales_data_total)
var(sales_data_total$문화)
sd(sales_data_total$문화)

'잡화' 열 추가
열 이름 수정(colnames)

 

'문화' 열 추가

 

'2024' 행 추가
summary(), var(), sd()

 

 

 

 

5. 데이터프레임 원하는 값 추출 / 조건에 의한 값 추출

#원하는 값 추출 
sales_data_total["2019", "의류"]
sales_data_total[4, 3]   # 4행(2019), 3열(의류)
sales_data_total[5:8, 1:3] # 5~8행(2020,2021,2022,2023), 1~3열(화장품,식료품,의류)

#조건에 의한 값 추출_ 화장품 500초과, 식료품 30이상 년도 뽑기 
help("subset")
subset1 <- subset(sales_data_total, 화장품>500) 
subset1
subset2 <- subset(subset1, 식료품>=30)
subset2

원하는 값 추출
조건에 의한 값 추출 (subset)

 

 

 

 

6. 조건문(if-else)

 

#if, else
sales <- 600

if(sales > 700){
  print("S")
}else{
  if(sales > 600){
    print("A")
  }else{
    if(sales > 500){
      print("B")
    }else{
      print("c")
    }
  }
}

#ifelse
sales <- 400
ifelse(sales >= 700, "A", ifelse(sales >= 600, "B", 
                                 ifelse(sales >= 500, "C", "D")))

#for
for(i in c(1:10)){
  print(i)
}

if-else 문
ifelse 문
for 문

 

 

728x90
반응형