63555


もし、ご助言いただけると大変助かります。

以下のようなことをしたいと思っております。

・df(下記)の２～４列目の値をそれぞれ5列目の値で割る。

・その結果を行ごとに新たに作成したdf_chaの3列目に代入したい。

・つまりdf_chaの3列目には上から0.6, 0, 0.4, 0.5, 0.2, 0.3, 0.3, 0.5, 0.2, 0.2, 0.5,
0.3という値が入るようにしたい。

アドバイスいただけると助かります。

[code]

    # データフレームの作成
    treatment   <- c("A", "A", "B", "B")
    alive   <- c(60, 50, 30, 20)
    fire  <- c(0, 20, 50, 50)
    dry <- c(40, 30, 20, 30)
    total <-  c(100, 100, 100, 100)
    df <- data.frame(treatment, alive, fire, dry, total)
    # 空のマトリックス作成。3列目に計算結果を入れたい。
    df_cha <- matrix(data = NA, nrow = 12, ncol = 3)
    df_cha [, 1] <- rep(c("A","B"), each = 6)
    df_cha_clnm <- colnames(df)[2:4]
    df_cha [,2] <- rep(df_cha_clnm, 4)コードをここに入力
    
[/code]


CC BY-SA 4.0
2020-03-04T03:18:54.700
63551
2020-03-04T06:30:38.707
2020-03-04T03:25:38.737
3060
37598
question
r
行ごとに計算した結果を１列に代入する


`gather`で縦持ちに変換後、`mutate`で計算し、`arrange`で並び替えを行うことで可能です。

[code]

    df %>% 
      rowid_to_column() %>% 
      gather(col, value, -treatment, -total, -rowid) %>% 
      mutate(value = value/total) %>% 
      arrange(rowid) %>% select(-rowid, -total)
    
[/code]


CC BY-SA 4.0
2020-03-04T06:30:38.707
63555
2020-03-04T06:30:38.707
36395
63551
answer