Как исправить ошибку функции суммирования в пакете dplyr? - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть некоторые проблемы с функцией суммирования в пакете "dplyr". Это код.

library("dplyr")
a <- read.csv("Number of subway passengers.csv",header = T, stringsAsFactor = F)
a <- a[,c(-2,-3,-4,-5)]
colnames(a)=c("Date","4-5","5-6","6-7","7-8","8-9","9-10","10-11","11-12","12-13","13-14","14-15","15- 
16","16-17","17-18","18-19","19-20","20-21","21-22","22-23","23-24","0-1","1-2","2-3","3-4","Total")

b <- summarise(a,mean_passenger=mean("Total",na.rm=TRUE)) 

После выполнения последнего кода у меня возникли некоторые ошибки в обобщении.

In mean.default("Total", na.rm = TRUE) : argument is not numeric or logical:returning NA

Почему возникает эта ошибка?

Я прилагаю результат использования функции ул.

> str(a)
'data.frame':   16501 obs. of  26 variables:
 $ Date        : chr  "2019-11-01" "2019-11-01" "2019-11-01" "2019-11-01" ...
 $ 4-5         : int  32 2 3 0 5 0 11 1 2 0 ...
 $ 5-6         : int  438 353 89 182 143 211 187 127 83 175 ...
 $ 6-7         : int  529 2019 152 852 161 1078 154 477 115 622 ...
 $ 7-8         : int  1612 4520 289 2926 288 4395 302 1044 219 1817 ...
 $ 8-9         : int  3405 9906 435 9348 482 13000 386 3662 366 5234 ...
 $ 9-10        : int  2360 6525 481 4124 631 6669 550 3510 494 3292 ...
 $ 10-11       : int  2377 3571 716 2064 768 2964 841 2593 843 2292 ...
 $ 11-12       : int  2853 2951 1090 1889 1359 2501 1686 2813 1262 2349 ...
 $ 12-13       : int  3334 3190 1073 1538 1531 2127 1781 2646 1583 2160 ...
 $ 13-14       : int  3545 3348 1367 1751 1937 2108 2059 2718 1868 2159 ...
 $ 14-15       : int  2850 3179 1782 1403 2466 1926 2405 2579 2303 2071 ...
 $ 15-16       : int  4606 3265 2235 1431 2821 1718 3125 2103 2479 1559 ... 
 $ 16-17       : int  4915 3575 2345 1218 3403 1778 3241 2010 2656 1777 ...
 $ 17-18       : int  7472 4191 3627 1249 5807 2396 3796 2033 3583 1599 ...
 $ 18-19       : int  11107 5445 7462 1486 10738 3746 4836 2582 5246 1776 ...
 $ 19-20       : int  5754 3882 2943 816 4680 2557 3192 1682 2709 1261 ...
 $ 20-21       : int  3920 2596 2249 439 3670 935 2107 675 1782 548 ...
 $ 21-22       : int  3799 2177 2199 288 4495 510 2452 512 1565 341 ...
 $ 22-23       : int  3369 1624 1460 296 4118 384 2407 380 1094 260 ...
 $ 23-24       : int  1678 912 640 202 2366 299 1394 323 596 153 ...
 $ 0-1         : int  228 478 62 47 271 75 236 143 66 73 ...
 $ 1-2         : int  2 39 0 1 1 0 6 10 1 1 ...
 $ 2-3         : int  0 0 0 0 0 0 0 0 0 0 ...
 $ 3-4         : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Total       : int  70185 67748 32699 33550 52141 51377 37154 34623 30915 31519 ...

1 Ответ

0 голосов
/ 03 апреля 2020

«Всего» интерпретируется как строка. Мы можем воспроизвести ту же ошибку с

mean("Total")
#[1] NA

Предупреждающее сообщение: In mean.default ("Total"): аргумент не числовой c или логический: возвращение NA

Нам нужно использовать Total без кавычек, чтобы интерпретировать как столбец.

b <- dplyr::summarise(a, mean_passenger = mean(Total,na.rm=TRUE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...