如何在 R 程序中删除带“*”的行?

How can I remove the row with "*" in R program?

我想删除缺少该值的行。例如,我的数据框如下所示:

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

我想删除值为 * 的午餐列。我应该怎么办?任何帮助将不胜感激。

我们可以使用 subset!=

dat1 <- droplevels(subset(dat, total_bill != "*"))
dat1 <- type.convert(dat1, as.is = TRUE)
sum(dat1$total_bill, na.rm = TRUE)
#[1] 44.87

如果 total_bill 是字符,您可以将其转换为数字,这将自动将所有非字符转换为 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)