R中的汇总功能

时间:2019-06-20 07:23:07

标签: r database dplyr

我正在尝试创建一个包含一些数字变量的R数据库。 在执行此操作时,我犯了一个输入错误,其结果对我来说很奇怪,我想了解原因(当然,这里我确实缺少什么)。

我试图四处寻找可能的解释,但没有找到我想要的。

library("dplyr")
library("tidyr")

 data <- 
  data.frame(FS = c(1), FS_name = c("Armenia"), Year = c(2015), class = 
  c("class190"), area_1000ha = c(66.447)) %>% 
  mutate(FS_name = as.character(FS_name)) %>%
  mutate(Year = as.integer(Year)) %>%
  mutate(class = as.character(class)) %>%
  tbl_df()

data

x <-  data %>% 
  group_by(FS, FS_name, Year, class) %>%
  dplyr::summarise(area_1000ha = sum(area_1000ha, rm.na = TRUE)) %>% 
  ungroup()

如您所见,错误是     rm.na = 而不是     na.rm = 正确键入后,在area_1000ha变量(10.5)上得到正确的结果。 如果我不这样做-即保持rm.na =我得到11.5,而不是(实际上是+1)。 我想念什么?

2 个答案:

答案 0 :(得分:5)

我认为rm.na=TRUE被加到总和上,因为TRUE被认为是1,所以它将您的初始总和与1相加。 例如,如果您将TRUE更改为2

x <- data %>% 
  group_by(FS_name, Year, class) %>%
  dplyr::summarise(area_1000ha = sum(area_1000ha, rm.na = 2)) %>% 
  ungroup()

结果是

# A tibble: 1 x 4
  FS_name  Year class    area_1000ha
  <chr>   <int> <chr>          <dbl>
1 Rome     2018 class190        12.5

答案 1 :(得分:1)

R中没有rm.na的函数,因此R将其视为具有值TRUE即1的变量。

尝试将其保留为na.rm = T,您将获得正确的结果。

即使您更改了变量的名称,

x <-  data %>% 
  group_by(FS, FS_name, Year, class) %>%
  dplyr::summarise(area_1000ha = sum(area_1000ha, tester = TRUE)) %>% 
  ungroup()

我用测试程序变量替换了rm.na。

# A tibble: 1 x 4
  FS_name  Year class    area_1000ha
  <chr>   <int> <chr>          <dbl>
1 Rome     2018 class190        11.5