[R] 데이터 프레임을 특정 열 기준으로 정렬하기
데이터 프레임을 하나 정의합시다. A=c(5,4,7,6,2,1,3) B=c(1,2,3,4,5,6,7) df=data.frame(A,B) > df A B 1 5 1 2 4 2 3 7 3 4 6 4 5 2 5 6 1 6 7 3 7 A 열을 기준으로 정렬해보겠습니다. order 함수를 이용하여 A열의 행들의 크기 순서를 알아냅니다. > order(df$A) [1] 6 5 7 2 1 4 3 이 순서를 데이터프레임의 행 인덱싱에 사용하면 됩니다. > df[order(df$A),] A B 6 1 6 5 2 5 7 3 7 2 4 2 1 5 1 4 6 4 3 7 3
2022. 4. 2.
R 데이터프레임 쉽게 이해하기
사전지식 : R 벡터 데이터프레임은 여러개의 벡터를 이어놓은 것이라고 할 수 있습니다. 각 벡터가 데이터 프레임의 열이 됩니다. 예를 들어봅시다. 벡터를 세개 정의하겠습니다. > vec1=c(1,2,3,4,5) > vec2=c('a','b','c','d','e') > vec3=c(TRUE,TRUE,TRUE,FALSE,FALSE) 데이터 프레임으로 합쳐봅시다. 아래와 같이 data.frame 이라는 함수를 사용하고, 벡터를 콤마로 구분해주시면 됩니다. > df1=data.frame(vec1,vec2,vec3) > df1 vec1 vec2 vec3 1 1 a TRUE 2 2 b TRUE 3 3 c TRUE 4 4 d FALSE 5 5 e FALSE 벡터가 각 열에 들어간 것을 알 수 있습니다.
2021. 10. 18.
R에서 날짜,시간 데이터 인식하는 법 (strptime)
아래와 같은 데이터프레임이 있다고 합시다. date=c("2021-01-01 01:01:01","2021-01-02 02:01:01","2021-01-03 03:01:01","2021-01-04 04:01:01","2021-01-05 05:01:01") x=c(10,20,30,40,50) dt=data.frame(date,x) > dt date x 1 2021-01-01 01:01:01 10 2 2021-01-02 02:01:01 20 3 2021-01-03 03:01:01 30 4 2021-01-04 04:01:01 40 5 2021-01-05 05:01:01 50 > str(dt) 'data.frame':5 obs. of 2 variables: $ date: chr "2021-01-01 01:01:0..
2021. 9. 16.
R에서 역행렬,행렬식,전치행렬 구하는 방법
함수는 아래와 같습니다. 역행렬 solve( ) 행렬식 det( ) 전치행렬 t( ) 아래는 예시입니다. > A=matrix(c(1,3,4,2,5,1,4,2,3),nrow=3) > A [,1] [,2] [,3] [1,] 1 2 4 [2,] 3 5 2 [3,] 4 1 3 > t(A) [,1] [,2] [,3] [1,] 1 3 4 [2,] 2 5 1 [3,] 4 2 3 > solve(A) [,1] [,2] [,3] [1,] -0.22807018 0.03508772 0.28070175 [2,] 0.01754386 0.22807018 -0.17543860 [3,] 0.29824561 -0.12280702 0.01754386 > det(A) [1] -57
2021. 3. 30.
[R코딩] 행렬에서 통계량과 각 원소의 편차 (sweep)
sweep 함수는 통계량과 각 원소의 차이를 반환해줍니다. 디폴트가 '차이'이고, 다른 계산값도 가능합니다. sweep(행렬, 방향, 통계량, FUN="-") FUN은 어떤 연산을 할지 결정합니다. 디폴트는 - 입니다. 각 원소에서 통계량을 빼는 것입니다. 예를 들어봅시다. 행렬을 하나 정의합시다. > m=matrix(1:12,3) > m [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 sweep 함수를 이용하여 각 원소에서 행렬의 최댓값을 빼봅시다. 이때는 방향이 따로 없기 때문에 1이나 2를 입력해도 결과가 동일합니다. > sweep(m,1,max(m)) [,1] [,2] [,3] [,4] [1,] -11 -8 -5 -2 [2,] -10 ..
2020. 12. 25.
[R코딩] 서브그룹 평균을 각 원소 값으로 반환 (ave)
사용 형식 : ave(종속변수, 독립변수(범주형)) 반환 결과 : 벡터 아래와 같은 데이터프레임이 있다고 합시다. A,B,C 반 학생의 수학점수입니다. > dt=data.frame(score=c(75,73,79,83,85,92,99,100,72,83),class=c('A','A','A','B','B','B','C','C','C','C')) > dt score class 1 75 A 2 73 A 3 79 A 4 83 B 5 85 B 6 92 B 7 99 C 8 100 C 9 72 C 10 83 C 각 반별로 따로 평균을 구하고, 각 값을 해당 평균값으로 바꾸고 싶습니다. 이럴 경우 사용하는 함수가 ave 함수입니다. > ave(dt$score,dt$class) [1] 75.66667 75.66667 75...
2020. 12. 25.
[R코딩] 서브그룹의 통계량을 구해주는 by 함수
사용 형식 : by(종속변수, 범주형 독립변수, 적용함수) 출력 결과 : by형 객체 아래와 같은 데이터프레임이 있다고 합시다. A,B,C 반 학생의 수학점수입니다. > dt=data.frame(score=c(75,73,79,83,85,92,99,100,72,83),class=c('A','A','A','B','B','B','C','C','C','C')) > dt score class 1 75 A 2 73 A 3 79 A 4 83 B 5 85 B 6 92 B 7 99 C 8 100 C 9 72 C 10 83 C 각 반별로 따로 평균을 구하고 싶다고 합시다. 이런 경우 사용하는 함수가 by 함수입니다. 아래와 같이 사용합니다. > by(dt$score,dt$class,mean) dt$class: A [1] ..
2020. 12. 25.
[R코딩] 서브그룹의 통계량을 구해주는 aggregate 함수
사용 형식 : aggregate(종속변수, by=범주형 독립변수, 적용함수) 출력 결과 : 데이터프레임 범주형 독립변수는 리스트 형태로 입력합니다. 예를 들어봅시다. 아래와 같은 데이터프레임이 있다고 합시다. A,B,C 반 학생의 수학점수입니다. > dt=data.frame(score=c(75,73,79,83,85,92,99,100,72,83),class=c('A','A','A','B','B','B','C','C','C','C')) > dt score class 1 75 A 2 73 A 3 79 A 4 83 B 5 85 B 6 92 B 7 99 C 8 100 C 9 72 C 10 83 C 각 반별로 따로 평균을 구하고 싶다고 합시다. 이런 경우 사용하는 함수가 aggregate 함수입니다. 아래와 같이 ..
2020. 12. 25.
[R] apply/ lapply/ sapply/ tapply/ mapply 함수 한눈에보기
함수이름 예시 역할 apply apply(x,1,mean) - 행렬, 배열, 데이터프레임에 사용 - 행방향 또는 열방향으로 함수 일괄 적용 lapply lapply(x,mean) - 리스트에 적용 - 리스트 형태로 결과 반환 - 행렬, 벡터에도 적용가능한데 의미는 없음 sapply sapply(x,mean) - 리스트에 적용 - 행렬 형태로 결과 반환 - 행렬, 벡터에도 적용가능한데 의미는 없음 tapply tapply(vec,fac,mean) - 입력된 벡터를, 요인 수준에 따라 함수 적용 mapply mapply(rep,times=4,li) - 사용할 함수의 input이 여러개인 경우 사용 - 나머지는 sapply 와 동일(리스트에적용) - 행렬, 벡터에도 적용가능한데 의미는 없음 1. apply 함..
2020. 12. 24.