Ошибка нумерации c при попытке использовать rbind - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь создать дополнительную строку в нижней части нижнего df, которая создает итог для каждого столбца. Это было сделано с использованием rbind(Men_15, colSums(Men_15[1:52,]). Однако, учитывая, что первая пара строк является фактором, а не цифрой c, я получаю сообщение об ошибке «х» должно быть цифрой c ». Как я могу заставить R игнорировать нерелевантные столбцы и суммировать только цифры c столбцов? Я также хочу назвать строку "США"

   structure(list(State = structure(1:52, .Label = c("Alabama", 
"Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", 
"Delaware", "District of Columbia", "Florida", "Georgia", "Hawaii", 
"Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", 
"Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", 
"Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", 
"Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", 
"North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", 
"Pennsylvania", "Puerto Rico", "Rhode Island", "South Carolina", 
"South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", 
"Washington", "West Virginia", "Wisconsin", "Wyoming"), class = "factor"), 
    Men = c(2341093L, 384160L, 3299088L, 1451913L, 19087135L, 
    2648667L, 1751607L, 448413L, 306674L, 9600009L, 4883331L, 
    709871L, 810464L, 6316899L, 3235263L, 1534595L, 1439862L, 
    2164208L, 2261156L, 650081L, 2872643L, 3249650L, 4861973L, 
    2692166L, 1451723L, 2964003L, 510163L, 929606L, 1407735L, 
    653484L, 4343027L, 1032414L, 9541801L, 4795408L, 367963L, 
    5662893L, 1906944L, 1948453L, 6245344L, 1713860L, 510388L, 
    2322409L, 423477L, 3167756L, 13171316L, 1459229L, 308573L, 
    4060948L, 3487725L, 913631L, 2851385L, 295561L)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -52L))

1 Ответ

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

Вы получаете ошибку от colSums, потому что ваш первый столбец не является цифрой c.

Чтобы добавить «США» в состояние столбца, вы можете преобразовать его с помощью as.character. В этом случае вы можете просто использовать sum, чтобы получить сумму столбца men.

Men_15$State <- as.character(Men_15$State)
Men_15 <- rbind(Men_15, list("USA", sum(Men_15$Men)))
tail(Men_15)
#           State       Men
#48      Virginia   4060948
#49    Washington   3487725
#50 West Virginia    913631
#51     Wisconsin   2851385
#52       Wyoming    295561
#53           USA 157448140

. Чтобы получить colSums только из numeric столбцов, вы должны проверить их с is.numeric как :

colSums(Men_15[sapply(Men_15, is.numeric)])
#      Men 
#157448140 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...