programing

R의 데이터 프레임에 열 추가

javaba 2021. 1. 15. 19:10
반응형

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

반응형