2017-09-27 18 views
-1

I STR(データフレーム)で表示される次のデータフレームは、(R:比率を計算する列の値を持つデータフレームセルの値を分割する方法

私は何をする必要があることは、対応する合計PJに分割P1で有します死亡率および計算の割合で。私は関数を適用のいくつかの並べ替えを使用する必要があります。しかし、私はRにあまりにも新しいが、それを越えて行くことになっていることを把握値PJにP1を交換してください。

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。ビュー(DF )は、次の出力を与えます。 View(df)

答えて

0

を繰り返す必要があります。列を合計で分けるだけです。

> xy <- data.frame(year = c(2010, 2011, 2012), 
+     P1 = 1:3, 
+     P2 = 4:6, 
+     PJ = 7:9, 
+     total = 4:6 
+) 
> 
> xy 
    year P1 P2 PJ total 
1 2010 1 4 7  4 
2 2011 2 5 8  5 
3 2012 3 6 9  6 
> xy[, 2:4] <- xy[, 2:4]/xy$total 
> xy 
    year P1 P2 PJ total 
1 2010 0.25 1 1.75  4 
2 2011 0.40 1 1.60  5 
3 2012 0.50 1 1.50  6 
0

ない私は、それはあなたが「対応する総死亡率とPJに分割P1」によって意味される正確に理解してください

新しいデータのための新しい列を追加したい場合は、このような何かを試みることができる:

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

これは、P1からPJまでの各列に対して繰り返す必要があります。あなたは間違いなくデータを上書きする場合、あなたは

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

を行うことができ

が再びそれはあなたが特別なことをする必要はありません

0

@RomanLuštrikの回答はあなたが望むものだと思います。あなたが別のアプローチに興味があるなら、の一部であるdplyr::mutate_atのようなものを使うこともできます。

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 
関連する問題