R 如何计算长数据格式列中不同变量的每个值的比例?

R 如何计算长数据格式列中不同变量的每个值的比例?,r,R,我有一个数据框“df”由5个变量和366个观察值组成。Ta、Tb和Tc分别是W乘以a、b和c的结果 day <- as.Date(seq(as.Date("2003-04-01"), as.Date("2004-03-31"), by = 1), format="%Y-%m-%d") W <- sample(10:1500, 366, replace=T) a <- runif(366, 0.005, 2.3) b <- runif(366, 0.5, 3.1) c &l

我有一个数据框“df”由5个变量和366个观察值组成。Ta、Tb和Tc分别是W乘以a、b和c的结果

day <- as.Date(seq(as.Date("2003-04-01"), as.Date("2004-03-31"), by = 1), format="%Y-%m-%d")
W <- sample(10:1500, 366, replace=T)
a <- runif(366, 0.005, 2.3)
b <- runif(366, 0.5, 3.1)
c <- runif(366, 0.003, 0.04)
df <- data.frame(day, W, a, b, c)
df1 <- df %>% mutate(Ta = W*a, Tb = W*b , Tc = W*c)

day您需要的是
groupby
功能

df2 %>% group_by(var) %>% mutate(T.perc=T_param/sum(T_param)*100)
# Source: local data frame [1,098 x 6]
# Groups: var [3]

#           day     W    var     value   T_param     T.perc
#        (date) (int) (fctr)     (dbl)     (dbl)      (dbl)
# 1  2003-04-01  1006      a 2.2037060 2216.9283 0.66052866
# 2  2003-04-02   270      a 1.3955652  376.8026 0.11226747
# 3  2003-04-03   783      a 0.1573310  123.1902 0.03670423
# 4  2003-04-04    80      a 1.5705017  125.6401 0.03743419
# 5  2003-04-05  1224      a 0.2571567  314.7598 0.09378197
# 6  2003-04-06   813      a 0.7835079  636.9919 0.18979026
# 7  2003-04-07  1144      a 1.2742529 1457.7453 0.43433185
# 8  2003-04-08  1252      a 2.2194189 2778.7125 0.82791098
# 9  2003-04-09   503      a 0.1744863   87.7666 0.02614986
# 10 2003-04-10   323      a 1.5328218  495.1014 0.14751433
# ..        ...   ...    ...       ...       ...        ...
library(tidyr)
df2 <- gather(df, "var", "value", 3:5)
df2$T_param <- df2$W *df2$value
df2 %>% group_by(var) %>% mutate(T.perc=T_param/sum(T_param)*100)
# Source: local data frame [1,098 x 6]
# Groups: var [3]

#           day     W    var     value   T_param     T.perc
#        (date) (int) (fctr)     (dbl)     (dbl)      (dbl)
# 1  2003-04-01  1006      a 2.2037060 2216.9283 0.66052866
# 2  2003-04-02   270      a 1.3955652  376.8026 0.11226747
# 3  2003-04-03   783      a 0.1573310  123.1902 0.03670423
# 4  2003-04-04    80      a 1.5705017  125.6401 0.03743419
# 5  2003-04-05  1224      a 0.2571567  314.7598 0.09378197
# 6  2003-04-06   813      a 0.7835079  636.9919 0.18979026
# 7  2003-04-07  1144      a 1.2742529 1457.7453 0.43433185
# 8  2003-04-08  1252      a 2.2194189 2778.7125 0.82791098
# 9  2003-04-09   503      a 0.1744863   87.7666 0.02614986
# 10 2003-04-10   323      a 1.5328218  495.1014 0.14751433
# ..        ...   ...    ...       ...       ...        ...