Применить потолок к кадру данных, игнорируя нечисловые значения - PullRequest
0 голосов
/ 03 июля 2018

У меня есть фрейм данных разных штатов за> 50 000 разных людей. Состояния представляют собой смесь целых чисел, десятичных дробей, NULL и символов. Я хотел бы применить функцию ceiling() к фрейму данных, но изменить только числовые значения, оставив все остальное таким же.

structure(list(`11/1/2014` = c("0", "NULL", "NULL", "NULL", "NULL", 
    "NULL"), `12/1/2014` = c("0", "0", "0", "0", "0", "0"), `1/1/2015` = c("0", 
    "0", "0", "0", "S", "0"), `2/1/2015` = c("0", "0", "1.72", "0", 
    "S", "0")), row.names = c(NA, 6L), class = "data.frame")

1 Ответ

0 голосов
/ 04 июля 2018

Нечисловые значения становятся NA с, когда вы пытаетесь привести их к числовым. Таким образом, вы можете использовать такую ​​функцию:

ceil <- function(x) {
  x_num <- suppressWarnings(as.numeric(x))
  ifelse(!is.na(x_num),
         as.character(ceiling(x_num)),
         as.character(x))
}

transmute_all(yourdataframe, ceil)
#   11/1/2014 12/1/2014 1/1/2015 2/1/2015
# 1         0         0        0        0
# 2      NULL         0        0        0
# 3      NULL         0        0        2
# 4      NULL         0        0        0
# 5      NULL         0        S        S
# 6      NULL         0        0        0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...