R 与列y相关的列x的连续和
在我的数据集中,每过一天,卷数总是从1开始。就像这样:R 与列y相关的列x的连续和,r,dplyr,R,Dplyr,在我的数据集中,每过一天,卷数总是从1开始。就像这样: Particle_Size Titrant Day Volume_titrant <chr> <chr> <dbl> <dbl> 1 > 40 NaOH 0 1 2 > 40 NaOH 0
Particle_Size Titrant Day Volume_titrant
<chr> <chr> <dbl> <dbl>
1 > 40 NaOH 0 1
2 > 40 NaOH 0 2
3 > 40 NaOH 0 3
4 > 40 NaOH 0 4
5 > 40 NaOH 0 5
39 > 40 NaOH 8 1
40 > 40 NaOH 8 2
41 > 40 NaOH 8 3
105 <60 NaOH 0 1
106 <60 NaOH 0 2
107 <60 NaOH 0 3
131 <60 NaOH 5 2
132 <60 NaOH 5 4
Particle_Size Titrant Day Volume_titrant Volume_total
<chr> <chr> <dbl> <dbl> <dbl>
1 > 40 NaOH 0 1 1
2 > 40 NaOH 0 2 2
3 > 40 NaOH 0 3 3
4 > 40 NaOH 0 4 4
5 > 40 NaOH 0 5 5
39 > 40 NaOH 8 1 6
40 > 40 NaOH 8 2 7
41 > 40 NaOH 8 3 8
105 <60 NaOH 0 1 1
106 <60 NaOH 0 2 2
107 <60 NaOH 0 3 3
131 <60 NaOH 5 2 5
132 <60 NaOH 5 4 9
我尝试将我的数据集分组,然后使用cumsum()
变异一个新列。
这会将几天的体积相加,并且每增加一个新的粒子大小,也会从1开始。到目前为止还不错,但我在示例中看到,这并不是我想要的数量
df = na.omit()%>%
group_by(Particle_Size, Titrant)%>%
mutate(Total_Volume = cumsum(Volume_titrant))
有没有一个函数,或者我需要一个带循环的解决方案?
有什么想法吗
在此处输入代码
您可以尝试在mutate()调用中使用sum()
library(dplyr)
dat %>%
group_by(Particle_Size) %>%
mutate(Total_valume = sum(Volume_titrant)) %>%
ungroup()
# # A tibble: 13 x 5
# Particle_Size Titrant Day Volume_titrant Total_valume
# <int> <chr> <int> <int> <int>
# 1 40 NaOH 0 1 21
# 2 40 NaOH 0 2 21
# 3 40 NaOH 0 3 21
# 4 40 NaOH 0 4 21
# 5 40 NaOH 0 5 21
# 6 40 NaOH 8 1 21
# 7 40 NaOH 8 2 21
# 8 40 NaOH 8 3 21
# 9 60 NaOH 0 1 12
# 10 60 NaOH 0 2 12
# 11 60 NaOH 0 3 12
# 12 60 NaOH 5 2 12
# 13 60 NaOH 5 4 12
库(dplyr)
dat%>%
分组依据(粒度)%>%
突变(总量=总量(体积滴定))%>%
解组()
##A tibble:13 x 5
#粒度滴定液日体积滴定液总值
#
#140氢氧化钠01 21
#240naoh0221
#340氢氧化钠0321
#440氢氧化钠0421
#540NaOH 0521
#6 40氢氧化钠8 1 21
#7 40氢氧化钠8 2 21
#840氢氧化钠8321
#9 60氢氧化钠01 12
#1060naoh0212
#1160氢氧化钠0312
#12 60氢氧化钠5 2 12
#13 60氢氧化钠5 4 12
您可以尝试在mutate()调用中使用sum()
library(dplyr)
dat %>%
group_by(Particle_Size) %>%
mutate(Total_valume = sum(Volume_titrant)) %>%
ungroup()
# # A tibble: 13 x 5
# Particle_Size Titrant Day Volume_titrant Total_valume
# <int> <chr> <int> <int> <int>
# 1 40 NaOH 0 1 21
# 2 40 NaOH 0 2 21
# 3 40 NaOH 0 3 21
# 4 40 NaOH 0 4 21
# 5 40 NaOH 0 5 21
# 6 40 NaOH 8 1 21
# 7 40 NaOH 8 2 21
# 8 40 NaOH 8 3 21
# 9 60 NaOH 0 1 12
# 10 60 NaOH 0 2 12
# 11 60 NaOH 0 3 12
# 12 60 NaOH 5 2 12
# 13 60 NaOH 5 4 12
库(dplyr)
dat%>%
分组依据(粒度)%>%
突变(总量=总量(体积滴定))%>%
解组()
##A tibble:13 x 5
#粒度滴定液日体积滴定液总值
#
#140氢氧化钠01 21
#240naoh0221
#340氢氧化钠0321
#440氢氧化钠0421
#540NaOH 0521
#6 40氢氧化钠8 1 21
#7 40氢氧化钠8 2 21
#840氢氧化钠8321
#9 60氢氧化钠01 12
#1060naoh0212
#1160氢氧化钠0312
#12 60氢氧化钠5 2 12
#13 60氢氧化钠5 4 12
正如我已经说过的,您想要的输出中似乎有一些输入错误。为什么第132行的期望输出是9?而第40行和第41行中的期望输出分别为7和8。第132行应为7行,或第40和41行应分别为8和11行?你的逻辑有点混乱!是否只想将前一天的最后一个值添加到当前日期?试试这个语法
库(dplyr)
df%>%左侧加入(df%>%分组依据(粒度,天)%>%
总结(最后一次值=最后一次(体积滴定),.groups='drop')%>%
分组依据(粒度)%>%
变异(last_val=cumsum(滞后(last_val,默认值=0)),按=c(‘粒径’、‘天’)%%>%
突变(期望值=体积滴定液+最后值)
#>粒度滴定液日体积滴定液上次滴定液所需值
#>1>40 NaOH 01 01
#>2>40 NaOH 0 2 0 2
#>3>40氢氧化钠03 03
#>4>40 NaOH 0 4 0 4
#>5>40氢氧化钠0505
#>6>40 NaOH 8 1 5 6
#>7>40 NaOH 8 2 5 7
#>8>40 NaOH 8 3 5 8
#>9 10 11 12 13正如我已经说过的,您想要的输出中似乎有一些输入错误。为什么第132行的期望输出是9?而第40行和第41行中的期望输出分别为7和8。第132行应为7行,或第40和41行应分别为8和11行?你的逻辑有点混乱!是否只想将前一天的最后一个值添加到当前日期?试试这个语法
库(dplyr)
df%>%左侧加入(df%>%分组依据(粒度,天)%>%
总结(最后一次值=最后一次(体积滴定),.groups='drop')%>%
分组依据(粒度)%>%
变异(last_val=cumsum(滞后(last_val,默认值=0)),按=c(‘粒径’、‘天’)%%>%
突变(期望值=体积滴定液+最后值)
#>粒度滴定液日体积滴定液上次滴定液所需值
#>1>40 NaOH 01 01
#>2>40 NaOH 0 2 0 2
#>3>40氢氧化钠03 03
#>4>40 NaOH 0 4 0 4
#>5>40氢氧化钠0505
#>6>40 NaOH 8 1 5 6
#>7>40 NaOH 8 2 5 7
#>8>40 NaOH 8 3 5 8
#>9 10 11 12 13(1)分组依据(粒度、滴定剂)
可以,但您没有向其提供任何数据。在此之前,您是否省略了前面的mydata%%>%
?或者您是否打算使用分组依据(mydata、粒度、滴定液)
?(2) 如果你不想要一个累积的总和,也许你应该代替mutate
library(dplyr)
dat %>%
group_by(Particle_Size) %>%
mutate(Total_valume = sum(Volume_titrant)) %>%
ungroup()
# # A tibble: 13 x 5
# Particle_Size Titrant Day Volume_titrant Total_valume
# <int> <chr> <int> <int> <int>
# 1 40 NaOH 0 1 21
# 2 40 NaOH 0 2 21
# 3 40 NaOH 0 3 21
# 4 40 NaOH 0 4 21
# 5 40 NaOH 0 5 21
# 6 40 NaOH 8 1 21
# 7 40 NaOH 8 2 21
# 8 40 NaOH 8 3 21
# 9 60 NaOH 0 1 12
# 10 60 NaOH 0 2 12
# 11 60 NaOH 0 3 12
# 12 60 NaOH 5 2 12
# 13 60 NaOH 5 4 12