如何将数据帧行的正值除以特定的列,将同一数据帧行的负值除以另一特定的列?
例如:我需要将第一行的所有值都除以“资产”列,因为它们都是正数。
在第二行上,所有值都需要按“资产”列进行划分,但是要与“行”列关联的值,因为它是该行的唯一负值。
有什么建议吗?
答案 0 :(得分:0)
假设数据帧为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