我有一些具有不同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自动执行此操作?提前谢谢你:)
答案 0 :(得分: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