如何建立自动划分列值?

问题描述 投票:2回答:1

我有一些具有不同ncol的数据帧。我想用来自第二列的特定规则替换该值,此列中的值应该是原始值除以它之前的值。例如:

df= data.frame(rep(60,3),c(40:42),c(30:32),c(1:3))
colnames(df) <- c(1,2,3,4)
> df
  1  2  3  4
1 60 40 30 1
2 60 41 31 2
3 60 42 32 3
#rule:all the first column should divide 100, the second col divide first col
#     the third col divide second col and so on.
#ideal result 
  1    2      3     4 
1 0.6 0.667 0.75  0.033
2 0.6 0.683 0.756 0.065 
3 0.6 0.7   0.762 0.094
#the only idea I got now is that use Map and manual replace it
u1<-df$'1'/100
u2<-Map("/",df$`2`,df$`1`)
...
allu <- dataframe(u1,u2,...)

是否有可能使用不同的ncol自动执行此操作?先感谢您 : )

r dataframe
1个回答
1
投票

我们可以通过删除第一列(df[-1])和最后一列(df[-ncol(df)])来划分它,以便我们划分备用列,并将cbind除以第一列除以100

cbind(df[1]/100, df[-1]/df[-ncol(df)])
#    1         2         3          4
#1 0.6 0.6666667 0.7500000 0.03333333
#2 0.6 0.6833333 0.7560976 0.06451613
#3 0.6 0.7000000 0.7619048 0.09375000
© www.soinside.com 2019 - 2024. All rights reserved.