Исключить отсутствующие данные в цикле for - PullRequest
0 голосов
/ 17 апреля 2020

это мой первый раз при переполнении стека. Надеюсь, мой вопрос задан c достаточно для сообщества.

  1. У меня есть этот набор данных: введите описание изображения здесь

  2. В настоящее время я пытаюсь визуализировать распределение этого набора данных, используя следующий код:

`

#Create a 2 by 3 plot
par(mfrow=c(2,3))

# Plot each column one by one
for (i in 1:ncol(dataset)) {
## Select the variable
x <- dataset[, i]
plot(density(x), main=paste("x",i,": S=",round(skew(x),3),", K=",round(kurtosi(x),3),sep=""), 
   col="red", xlab="")
}

К сожалению, поскольку в моем наборе данных отсутствуют данные, R выдаст следующую ошибку:

Ошибка в density.default (x): 'x' содержит пропущенные значения

Могу ли я узнать, как получить R для построения графиков, не удаляя вручную все пропущенные случаи? Я совершенно новичок в R, поэтому любая помощь будет оценена.

Большое вам спасибо за ваше время :) 1027 *

Ответы [ 3 ]

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

Судя по картинке ваших данных, у вас есть пустых ячеек в дополнение к NA (которые, однако, отсутствуют на скриншоте). Чтобы избавиться от любого из них, вы можете сделать это:

Сначала преобразуйте пустые ячейки в NA:

df[df == ""] <- NA

Затем используйте na.omit, чтобы удалить строки, содержащие NA в любом столбец:

df_clean <- na.omit(df)

ДАННЫЕ:

df <- data.frame(
  x1 = sample(c("", 1:5, NA), 50, replace = T),
  x2 = sample(c("", 1:5, NA), 50, replace = T),
  x3 = sample(c("", 1:5, NA), 50, replace = T),
  x4 = sample(c("", 1:5, NA), 50, replace = T))
0 голосов
/ 17 апреля 2020

Мы также можем использовать complete.cases

 df <- replace(df, df == '', NA)
 df_clean <- df[complete.cases(df),]
0 голосов
/ 17 апреля 2020

Вы можете попробовать добавить na.omit ():

x <- na.omit(dataset[, i])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...