반응형
R의 데이터 프레임에 열 추가
다음 데이터 프레임 ( df
)이 있습니다.
start end
1 14379 32094
2 151884 174367
3 438422 449382
4 618123 621256
5 698271 714321
6 973394 975857
7 980508 982372
8 994539 994661
9 1055151 1058824
. . .
. . .
. . .
그리고 숫자 값 ( vec
)이 있는 긴 벡터 .
의 해당 위치에있는 값의 평균을 사용하여 각 행에 다른 열을 추가하고 싶습니다 vec
. 예를 들어 첫 번째 행에는 mean(vec[14379:32094])
. 나는 가지고 놀아 보았지만 transform
이 간단한 작업을 수행 할 수 없었다.
이는 다음과 같은 매우 표준적인 사용 사례입니다 apply()
.
R> vec <- 1:10
R> DF <- data.frame(start=c(1,3,5,7), end=c(2,6,7,9))
R> DF$newcol <- apply(DF,1,function(row) mean(vec[ row[1] : row[2] ] ))
R> DF
start end newcol
1 1 2 1.5
2 3 6 4.5
3 5 7 6.0
4 7 9 8.0
R>
원하는 경우 사용할 수도 plyr
있지만 여기서는 기본 R의 기능을 넘어 설 필요가 없습니다.
7 년 전의 질문 이더라도 R을 처음 접하는 사람들은 data.table , package 사용을 고려해야 합니다.
data.table은 data.frame이므로 data.frame에 대해 할 수있는 모든 작업을 수행 할 수 있습니다. 그러나 많은 사람들이 data.table을 사용하면 ORDERS가 훨씬 빠르다고 생각합니다.
vec <- 1:10
library(data.table)
DT <- data.table(start=c(1,3,5,7), end=c(2,6,7,9))
DT[,new:=apply(DT,1,function(row) mean(vec[ row[1] : row[2] ] ))]
참조 URL : https://stackoverflow.com/questions/3651651/adding-a-column-to-a-dataframe-in-r
반응형
'programing' 카테고리의 다른 글
Java 8 기본 메소드가 소스 호환성을 중단합니까? (0) | 2021.01.15 |
---|---|
Android Jar 라이브러리 (0) | 2021.01.15 |
0.0.0.0이 유효한 IP 주소입니까? (0) | 2021.01.15 |
협업시 구성 파일을 관리하는 방법은 무엇입니까? (0) | 2021.01.15 |
npm은 루트로 실행하지 않는 것을 어떻게 / 왜 권장합니까? (0) | 2021.01.15 |