R中data.frame的每个变量的累计和?

问题描述 投票:0回答:1

在我下面的代码中,我想先去掉 Variable 我没有任何值(即 F 然后,我试图找到每一个 Variable. 我试着用下面的代码,但我没有得到任何东西。

library(tidyverse)

set.seed(50)

DF <- data.frame(Days = 1:5, A = runif(5,0,3), S = runif(5,1,6),  F = matrix(NA, 5,1), C = runif(5,2,4))
DF_1 <- gather(DF, -Days, key = "Variable", value = "Value")
DF_2 <- DF_1 %>% 
  filter(Variable == "NA") %>% 
  mutate(cumulative_Sum = cumsum(Value))

輸出

对于 Variable A 我应该得到类似下面的东西--类似于其他人

> A <- cumsum(DF$A)
> A
[1] 2.126181 3.439161 4.039176 6.340374 7.879859
r dataframe tidyverse na cumsum
1个回答
1
投票

按'Variable'分组后。 filter 淘汰全部 NA '值',然后将NA替换为0后做'值'的累加和。

library(dplyr)
library(tidyr)
DF_1 %>%           
   group_by(Variable) %>% 
   filter(!all(is.na(Value))) %>% 
   mutate(Value = cumsum(replace_na(Value, 0)))
# A tibble: 15 x 3
# Groups:   Variable [3]
#    Days Variable Value
#   <int> <chr>    <dbl>
# 1     1 A         2.13
# 2     2 A         3.44
# 3     3 A         4.04
# 4     4 A         6.34
# 5     5 A         7.88
# 6     1 S         1.22
# 7     2 S         5.72
# 8     3 S         9.95
# 9     4 S        11.2 
#10     5 S        12.7 
#11     1 C         2.78
#12     2 C         5.32
#13     3 C         8.60
#14     4 C        10.8 
#15     5 C        13.3 

如果我们使用'宽'格式'DF',那么使用 mutate_at

DF %>%
   mutate_at(-1, cumsum)
© www.soinside.com 2019 - 2024. All rights reserved.