2013-08-14 5 views
0

제가R : 데이터 프레임 열에 특정 데이터 조작

x <- data.frame(id=letters[1:3],val0=c(100,200,300),val1=c(400,500,600),val2=c(700,800,900)) 

난 (말) 다른 개수 (N2)와 특정 개수 N1 (말)와 짝수 열과 홀수 열을 분할 할 데이터 프레임을 가지고있다. 그래서, 내가 원하는 결과는 다음과 같습니다.

>n1<-2 
>n2<-5 

id val0 val1 val2 
a  50  80  350 
b  100  100 400 
c  150  120 450 

누군가이 방법을 제안 할 수 있습니까?

감사합니다.

답변

1

함수 seq()을 사용하여 열 번호에 대한 값을 생성 한 다음 해당 열을 부분 집합화할 수 있습니다. 도 들어 열은 2 다음에 관심이 수로 나눈 같은 선택 열이 선택한 열을 대체 3.와 이상한 별을 시작

x[,seq(2,ncol(x),2)]<-x[,seq(2,ncol(x),2)]/n1 
x[,seq(3,ncol(x),2)]<-x[,seq(3,ncol(x),2)]/n2 
0

약간 위장 for 루프 :.

x[] <- lapply(seq_len(ncol(x)), function(i) x[, i]/ifelse(i%%2, 2, 5)) 

을 그리고 킥을 위해서 :

x[] <- lapply(seq_len(ncol(x)), function(i) x[, i]/if(i%%2) 2 else 5)