Ошибка R (от NA до 0): дубликаты подписок для столбца в кадре данных - PullRequest
0 голосов
/ 25 июня 2018

Я просмотрел несколько ответов на Stackoverflow, но все еще не смог решить свою проблему. Я сделал функцию, которая работает, но я кое-что добавил, и теперь она больше не будет работать. Я хочу заменить все NA на 0, что мне кажется простым.

Это моя функция, и я добавил bframe[is.na(bframe)] <- 0:

B <- function(frame1, frame2, column){
  bframe <- merge(frame 1, frame2, by = column, all = TRUE)
  bframe$result <- bframe$freq.x - bframe$freq.y
  bframe$percentage <- (bframe$result/bframe$freq.y)*100
  bframe[is.na(bframe)] <- 0
  return(bframe)
}

B(DT2_1, 2_1, "BurgS")

Однако выдает эту ошибку: Error in '[<-.data.frame'('* tmp *, thisvar, value = 0) : duplicate subscripts for columns.

Ошибка возникает из-за того, что есть NA, и он не может выполнить вычисления:

BurgS  freq.x  freq.y  result   percentage  percentageABS
1      9204    184042  -174838  -94.99897   94.99897 
2      150     3034    -2884    -95.05603   95.05603 
3      130     2602    -2472    -95.00384   95.00384 
98     NA      47      NA       NA          NA 

Не каждый фрейм данных имеет такую ​​структуру, поэтому я ищу решение, которое изменяет NA в наборе данных целом . Кто-нибудь может мне помочь?

Изменено 26/6/2018: я сам нашел решение проблемы. Код выглядит следующим образом, поэтому NA из freq.x изменяется на 0 и все еще может быть частью вычислений, результат которых показан в последних трех столбцах:

B <- function(frame1, frame2, column){
  bframe$freq.x[is.na(bframe$freq.x)] <- 0
  bframe <- merge(frame 1, frame2, by = column, all = TRUE)
  bframe$result <- bframe$freq.x - bframe$freq.y
  bframe$percentage <- (bframe$result/bframe$freq.y)*100
  return(bframe)
}

B(DT2_1, 2_1, "BurgS")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...