Как я могу удалить строку с "*" в программе R? - PullRequest
1 голос
/ 30 апреля 2020

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

dat <- data.frame(
  time = factor(c("Breakfast","Lunch","Lunch","Dinner"), levels=c("Breakfast","Lunch","Dinner")),
  total_bill = c(12.75,14.89,"*",17.23)
)

Я хочу удалить столбец Обед со значением *. Что мне делать? Любая помощь будет высоко ценится.

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Мы можем использовать subset с !=

dat1 <- droplevels(subset(dat, total_bill != "*"))
dat1 <- type.convert(dat1, as.is = TRUE)
sum(dat1$total_bill, na.rm = TRUE)
#[1] 44.87
0 голосов
/ 30 апреля 2020

Если total_bill является символом, вы можете преобразовать его в число c, которое автоматически превратит все не-символы в NA с предупреждением, а затем вы можете выполнить sum, mean или другие математические операции на нем.

sum(as.numeric(dat$total_bill),na.rm = TRUE)
#[1] 44.87

Если total_bill является фактором, вам нужно использовать

sum(as.numeric(as.character(dat$total_bill)),na.rm = TRUE)
...