R:数据帧列特定数据操作

时间:2013-08-14 09:14:08

标签: r dataframe

我有一个数据框

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

有人可以建议我怎么做吗?

感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)