如何将数据帧行的正值除以特定列,将相同数据帧行的负值除以另一个特定列?
例如:我需要将第一行的所有值除以“资产”列,因为它们都是正数。
在第二行,所有值都需要除以“Assets”列,但是与“RoW”列相关联的值,因为它是行的唯一负值。
有什么建议?
假设数据帧是df
。那么以下应该做你想要的:
apply(df, FUN=function(x) ifelse(x > 0, x / df$Assets, x / df$Whatever), MARGIN=2)
它迭代所有列(MARGIN=2
中的apply
)并将给定函数应用于所有列。在每列中,正条目除以Assets
列中的对应值,非正值除以Whatever
列中的对应值。
例:
> df <- data.frame(Profit=c(1000,-1000,2000,-2000),
Assets=c(1,2,3,4), Whatever=c(-10,-20,-30,-40))
> df
Profit Assets Whatever
1 1000 1 -10
2 -1000 2 -20
3 2000 3 -30
4 -2000 4 -40
> apply(df, FUN=function(x) ifelse (x > 0, x / df$Assets,
x / df$Whatever), MARGIN=2)
Profit Assets Whatever
[1,] 1000.0000 1 1
[2,] 50.0000 1 1
[3,] 666.6667 1 1
[4,] 50.0000 1 1