我甚至没有真正使用过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