R:如何使用列中的值来划分数据帧单元格值以计算比例

时间:2017-09-27 10:05:00

标签: r

我有以下数据框(由str(dataframe)

显示)

我需要做的是将P1与PJ除以相应的总死亡率,并用计算的比例替换P1到PJ值。我想我必须使用某种应用功能。但是我对R来说太新了,不能超越它。

data.frame':    26 obs. of  9 variables:
 $ year          : int  1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 ...
 $ P1            : num  0.0182 0.0143 0.0138 0.0118 0.0109 ...
 $ P2            : num  0.0447 0.0348 0.0335 0.0285 0.0267 ...
 $ P3            : num  0.1128 0.0888 0.0872 0.0754 0.0718 ...
 $ P4            : num  0.278 0.274 0.307 0.296 0.296 ...
 $ P5            : num  1.67 1.42 1.42 1.23 1.19 ...
 $ PJ            : num  46.7 41.1 40.6 36.6 35.1 ...
 $ TotalMortality: num  48.8 42.9 42.5 38.3 36.7 ...
 $ GDP           : int  23895 24196 24368 25321 26372 27732 29233 30406 31847 33203 ...

PS。 View(df)给出以下输出 View(df)

3 个答案:

答案 0 :(得分:0)

我不确定我到底是什么意思,将P分为PJ和相应的总死亡率"

如果您想为新数据添加新列,可以尝试以下方法:

df$NewColumn <- df$P1 / df$TotalMortality

对于从P1到PJ的每一列,都需要重复这一过程。

如果您肯定想要覆盖数据,那么您可以

df$P1 <- df$P1 / df$TotalMortality

再次需要重复

答案 1 :(得分:0)

你不需要任何特别的东西。只需将列与总数分开即可。

$('#demo').daterangepicker({
    "linkedCalendars": false,
    timePicker: true,
    dateLimit: { hours: 24 },
});

答案 2 :(得分:0)

我认为@RomanLuštrik的答案就是你想要的。如果您对替代方法感兴趣,也可以使用dplyr::mutate_at之类的tidyverse

library(tidyverse)
x <- tibble(year = 1990:1993,
            P1 = 1:4, 
            P2 = 9:12, 
            PJ = 13:16, 
            Total_Mortality = 2:5)

x %>% mutate_at(vars(P1:PJ), funs(./Total_Mortality))
#> # A tibble: 4 x 5
#>    year        P1       P2       PJ Total_Mortality
#>   <int>     <dbl>    <dbl>    <dbl>           <int>
#> 1  1990 0.5000000 4.500000 6.500000               2
#> 2  1991 0.6666667 3.333333 4.666667               3
#> 3  1992 0.7500000 2.750000 3.750000               4
#> 4  1993 0.8000000 2.400000 3.200000               5
相关问题