通过了解dplyr和组_
我在我的工作流程中使用dplyr已经有一段时间了。我逐渐意识到,也许我不理解组的功能。请有人解释一下,是否有更好的方法来实现我的目标 我最初的理解是,通过在诸如mutate之类的操作之前引入group_by(),mutate函数将在group_by()指定的组之间不连续地执行其功能,并在group_by()指定的每个条件下重新启动其操作 这似乎不是真的,我不得不求助于将我的数据表按之前输入group_by()的条件拆分成列表,执行我预期的功能,然后将列表折叠回矩阵;通过使用lappy 下面的例子。我的意图是针对每个条件对TVC列执行求和运算。但是,您将看到求和列是跨TVC列的简单求和操作,而不需要在条件列指定的组之间进行离散化通过了解dplyr和组_,r,dplyr,R,Dplyr,我在我的工作流程中使用dplyr已经有一段时间了。我逐渐意识到,也许我不理解组的功能。请有人解释一下,是否有更好的方法来实现我的目标 我最初的理解是,通过在诸如mutate之类的操作之前引入group_by(),mutate函数将在group_by()指定的组之间不连续地执行其功能,并在group_by()指定的每个条件下重新启动其操作 这似乎不是真的,我不得不求助于将我的数据表按之前输入group_by()的条件拆分成列表,执行我预期的功能,然后将列表折叠回矩阵;通过使用lappy 下面的例子
> (data %>% filter(`Elapsed Time (days)`<=8) %>%
+ arrange(Condition,`Elapsed Time (days)`) %>%
+ select(Condition, `Elapsed Time (days)`, TVC) %>%
+ filter(!is.na(TVC)) %>%
+ group_by(Condition) %>%
+ mutate(summation =cumsum(TVC)))
# A tibble: 94 x 4
# Groups: Condition [24]
Condition `Elapsed Time (days)` TVC summation
<chr> <drtn> <dbl> <dbl>
1 1A 0.000000 secs 15400921. 15400921.
2 1A 4.948611 secs 11877256. 27278177
3 1A 6.027778 secs 11669731. 38947908.
4 1A 6.949306 secs 11908853. 50856761.
5 1B 0.000000 secs 14514263. 65371024.
6 1B 4.948611 secs 8829356. 74200380.
7 1B 6.027778 secs 12068221. 86268601.
8 1B 6.949306 secs 10111424. 96380026.
9 1C 0.000000 secs 15400921. 111780946.
10 1C 4.948611 secs 8680060 120461006.
>(数据%>%过滤器(`运行时间(天)`%
+安排(条件,`经过的时间(天)`)%>%
+选择(条件,`经过的时间(天)`,TVC)%>%
+过滤器(!is.na(TVC))%>%
+分组依据(条件)%>%
+变异(总和=总和(TVC)))
#A tibble:94 x 4
#组:条件[24]
条件`经过的时间(天)`TVC总和
1A 0.000000秒15400921.15400921。
2 1A 4.948611秒11877256.27278177
3 1A 6.027778秒11669731.38947908。
41a 6.949306秒11908853.50856761。
5 1B 0.000000秒14514263.65371024。
6 1B 4.948611秒8829356.74200380。
7 1B 6.027778秒12068221.86268601。
8 1B 6.949306秒10111424.96380026。
9 1C 0.000000秒15400921.111780946。
10 1C 4.948611秒8680060 120461006。
嘿,我会在您的代码块之前尝试此操作:
df$Condition <- as.factor(df$Condition)
按照建议尝试;这是一个不可能的…仍然在所有条件下显示
求和
作为一个求和。在这里尝试在mutate:mutate(summation=sum(TVC))中进行此更改。我认为求和不是您想要做的。您现在能够重现此行为吗?
df %>% group_by(Condition) %>% mutate(summation =cumsum(TVC))