1

私はデータフレームを持っています

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

特定の番号n1(たとえば)で奇数列を分割し、別の番号n2(たとえば)で偶数列を分割したい。だから、私が望む結果は次のとおりです。

>n1<-2
>n2<-5

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

誰かがこれを行う方法を提案できますか?

ありがとう。

4

2 に答える 2

2

関数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
于 2013-08-14T09:26:54.703 に答える
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)
于 2013-08-14T10:07:56.720 に答える