уровни скрытого фактора - несоответствующая замена искомого значения в r - PullRequest
0 голосов
/ 26 февраля 2019

Я думаю, что у меня есть скрытые проблемы факторов, которые мешают успешной замене значений из таблицы поиска.Я преобразовал столбец фрейма данных Mono $ cov из фактора, но при попытке замены значений поиска Mono $ cov либо возвращается обратно к факторам, либо не выполняется.Во-первых, я удалил пробелы и преобразовал:

> class(Mono$cov)
[1] "factor"

Mono$cov <- gsub(' ', '', as.numeric(as.character(Mono$cov)))

> class(Mono$cov)
[1] "character"

Mono$cov
  [1] "3"  "7"  "8" "12" "5"  "5"

См. Ниже для полной производительности Mono $ cov.Затем я пытаюсь заменить значения в Mono $ cov, сопоставив lookup $ yr2018, и заменив lookup $ mid.

Если я запускаю следующие ошибки, то, что NA не разрешены в подписанных присвоениях:

Mono$cov[match(lookup$yr2018, Mono$cov)] <- lookup$mid

И только некоторые значения заменяются неправильно и:

> Mono$cov
  [1]  3.0 45.0 75.0 10.0 25.0  5.0

Если я использую этот код, я получаю в основном NA:

Mono$covTrans <- lookup[as.character(Mono$cov), 'mid']
> Mono$covTrans
[1]   NA 97.0 99.5   NA   NA   NA   NA   NA

dput(lookup)
        structure(list(low = c(0L, 0L, 1L, 5L, 10L, 20L, 30L, 40L, 50L, 
        60L, 70L, 80L, 90L, 95L, 99L), high = c(0, 1, 5, 10, 20, 30, 
        40, 50, 60, 70, 80, 90, 95, 99, 100), yr2018 = c(0, 1, 2, 
        3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), mid = c(0, 0.5, 3, 
        7.5, 15, 25, 35, 45, 55, 65, 75, 85, 92.5, 97, 99.5)), .Names = c("low", 
        "high", "2018", "mid"), row.names = c("0", "1", "2", "3-", 
        "3+", "4-", "4*", "4+", "5-", "5*", "5+", "6-", "6+", "7", "8"
        ), class = "data.frame")

EDIT: добавлены данные Mono $ cov здесь:

> head(dput(Mono$cov))
c("3", "7", "8", "12", "5", "5", "11", "12", "5", "9", "10", 
"0", "11", "13", "10", "11", "11", "10", "9", "1", "12", "4", 
"12", "10", "9", "4", "11", "4", "5", "3", "8", "5", "5", "13", 
"5", "9", "3", "12", "9", "9", "12", "10", "4", "9", "13", "9", 
"9", "6", "6", "4", "13", "9", "9", "7", "8", "10", "4", "10", 
"4", "7", "11", "13", "9", "10", "7", "2", "6", "0", "9", "0", 
"12", "10", "8", "12", "10", "11", "9", "3", "13", "10", "6", 
"10", "4", "1", "5", "0", "13", "3", "12", "8", "3", "9", "0", 
"0", "10", "4", "9", "12", "5", "2", "0", "4", "10", "4", "5", 
"9", "2", "8", "13", "9", "6", "9", "11", "5", "9", "5", "13", 
"8", "7", "3", "9", "12", "12", "4", "3", "3", "9", "11", "5", 
"0", "4", "13", "7", "11", "5", "7", "11", "10", "13", "6", "4", 
"0", "12", "11", "11", "9", "7", "13", "6", "3", "10", "7", "9", 
"11", "0", "9", "4", "7", "13", "12", "13", "10", "12", "11", 
"9", "0", "7", "9", "7", "11", "11", "2", "8", "4", "8", "4", 
"9", "9", "0", "11", "11", "9", "9", "7", "7", "5", "4", "0", 
"10", "8", "3", "10", "3", "6", "11", "5", "0", "4", "9", "9", 
"8", "11", "9", "13", "9", "0", "7", "4", "13", "4", "3", "6", 
"2", "4", "9", "8", "4", "4", "7", "10", "7", "10", "5", "8", 
"4", "12", "12", "7", "10", "8", "2", "0", "3", "11", "11", "12", 
"6", "10", "4", "10", "8", "12", "12", "4", "5", "0", "8", "7", 
"13", "8", "3", "7", "2", "5")
[1] "3"  "7"  "8"  "12" "5"  "5" 

UPDATE: изменение моего кода, как предлагается, все еще не работаетправильно.Mono$cov <- as.numeric(as.character(gsub(' ', '', Mono$cov))) Mono$covTrans <- lookup[as.numeric(Mono$cov), 'mid'].Результаты: $covTrans [1] 3.0 35.0 45.0 85.0 15.0, когда первое значение должно быть преобразовано от 3 до 7,5, с учетом таблицы поиска и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...