我正在尝试创建一个包含一些数字变量的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)。 我想念什么?
答案 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