我甚至没有真正使用过collect或spread,所以我对它们的参数不太熟悉。请看一下。在那里,我能做的解释更好。请对sum(airquality[,-5],na.rm=T)和sum(sapply(split(airquality,airquality$M
我甚至没有真正使用过collect或spread,所以我对它们的参数不太熟悉。请看一下。在那里,我能做的解释更好。请对sum(airquality[,-5],na.rm=T)和sum(sapply(split(airquality,airquality$M,r,dplyr,R,Dplyr,我甚至没有真正使用过collect或spread,所以我对它们的参数不太熟悉。请看一下。在那里,我能做的解释更好。请对sum(airquality[,-5],na.rm=T)和sum(sapply(split(airquality,airquality$Month),sum,na.rm=TRUE))的输出进行评论。。我认为这是一个问题,如果你添加月变量到结果或不…在我的解决方案中,我没有。相比之下,你的结果包括月和。你是正确的,但我们的方法仍然不一致。有趣的是,你可以看到我的错误,但是你的是相当
我甚至没有真正使用过
collect
或spread
,所以我对它们的参数不太熟悉。请看一下。在那里,我能做的解释更好。请对sum(airquality[,-5],na.rm=T)
和sum(sapply(split(airquality,airquality$Month),sum,na.rm=TRUE))的输出进行评论。
。我认为这是一个问题,如果你添加月变量到结果或不…在我的解决方案中,我没有。相比之下,你的结果包括月和。你是正确的,但我们的方法仍然不一致。有趣的是,你可以看到我的错误,但是你的是相当不透明的,所以我无法调试你的方法,我仍然认为是错误的。。。某个地方。嗯,为什么你认为我的解决方案是不透明的?因为我认为它是错误的(至少它得到的最终结果与我认为相当清楚的R动作不同),而且我无法按照逻辑找出错误在哪里。我认为人们需要查看每个中间结果,并确定它是否真的是预期的结果。所以这对我来说是“不透明的”。@Jimbou看看sum(aq[aq$Month==5,!grepl(“Month”,colnames(aq)),na.rm=TRUE)#[1]8397.3
和sum(aq[aq$Month==5,!grepl(“Month”,colnames(aq)),na.rm=TRUE)/5#[1]1679.46
并告诉我为什么你的答案不同。请评论sum(airquality[,-5]的输出,na.rm=T)
和sum(sapply(分割(空气质量,空气质量$Month),sum,na.rm=TRUE))
。我认为这是一个问题,如果你添加月变量到结果或不…在我的解决方案中,我没有。相比之下,你的结果包括月和。你是正确的,但我们的方法仍然不一致。有趣的是,你可以看到我的错误,但是你的是相当不透明的,所以我无法调试你的方法,我仍然认为是错误的。。。某个地方。嗯,为什么你认为我的解决方案是不透明的?因为我认为它是错误的(至少它得到的最终结果与我认为相当清楚的R动作不同),而且我无法按照逻辑找出错误在哪里。我认为人们需要查看每个中间结果,并确定它是否真的是预期的结果。因此,这对我来说是“不透明的”。@Jimbou看看sum(aq[aq$Month==5,!grepl(“Month”,colnames(aq)),na.rm=TRUE)#[1]8397.3
和sum(aq[aq$Month==5,!grepl(“Month”,colnames(aq)),na.rm=TRUE)/5#[1]1679.46
,并告诉我为什么你的答案不同。
head(airquality)
target_vars = c("Ozone","Temp","Solar.R")
airquality %>% group_by(Month) %>% select(target_vars) %>% summarise(rowSums(.))
Month v1 v2 v3 Sum
1 1 1 0 2
1 1 1 1 3
1 1 0 0 3
Month Average
1 8/3
library(dplyr)
library(purrr)
library(tidyr) # forgot this in original post
airquality %>%
group_by(Month) %>%
nest(Ozone, Temp, Solar.R, .key=newcol) %>%
mutate(newcol = map_dbl(newcol, ~mean(rowSums(.x, na.rm=TRUE))))
# A tibble: 5 x 2
# Month newcol
# <int> <dbl>
# 1 5 243.2581
# 2 6 278.1000
# 3 7 349.9677
# 4 8 289.4839
# 5 9 274.7333
airquality %>%
filter(Month == 5) %>%
select(Ozone, Temp, Solar.R) %>%
mutate(newcol = rowSums(., na.rm=TRUE)) %>%
summarise(sum5 = sum(newcol), mean5 = mean(newcol))
# sum5 mean5
# 1 7541 243.2581
sapply( split( airquality[target_vars], airquality$Month), sum, na.rm=TRUE)
5 6 7 8 9
7541 8343 10849 8974 8242
sapply( split( airquality[target_vars], airquality$Month), sum, na.rm=TRUE)/
(length(target_vars))
5 6 7 8 9
2513.667 2781.000 3616.333 2991.333 2747.333
library(tidyverse)
airquality %>%
select(Month, target_vars) %>%
gather(key, value, -Month) %>%
group_by(Month) %>%
summarise(n=length(unique(key)),
Sum=sum(value, na.rm = T)) %>%
mutate(Average=Sum/n)
# A tibble: 5 x 4
Month n Sum Average
<int> <int> <int> <dbl>
1 5 3 7541 2513.667
2 6 3 8343 2781.000
3 7 3 10849 3616.333
4 8 3 8974 2991.333
5 9 3 8242 2747.333