如何将数据帧的正数元素划分为特定的数据帧列,将负数的元素划分为另一列?

时间:2019-02-13 16:56:45

标签: r dataframe

如何将数据帧行的正值除以特定的列,将同一数据帧行的负值除以另一特定的列?

This is the data frame head.

例如:我需要将第一行的所有值都除以“资产”列,因为它们都是正数。

在第二行上,所有值都需要按“资产”列进行划分,但是要与“行”列关联的值,因为它是该行的唯一负值。

有什么建议吗?

1 个答案:

答案 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