我有一个电子表格,其中的列名称为自动编号,在该电子表格下方的最大值为几个“ *”值
CityName Autonumber
NYC 2
Atlanta 4
Nashville 8
Boston 6
LA *
Vegas 3
Florida *
我如何:-
方案a)删除带有“ *”值的行
方案b)将自动编号的平均值替换为“ *”
答案 0 :(得分:1)
是这样吗?
首先,我用NA
代替"?"
。
df$Autonumber <- as.character(df$Autonumber)
is.na(df$Autonumber) <- df$Autonumber == "?"
df$Autonumber <- as.numeric(df$Autonumber)
现在问题要问什么。
# 1) remove rows with NA
i <- is.na(df$Autonumber)
df[!i, ]
# 2) replace NA's by mean value
df$Autonumber[i] <- mean(df$Autonumber, na.rm = TRUE)
df
数据。
df <- read.table(text = "
CityName Autonumber
NYC 2
Atlanta 4
Nashville 8
Boston 6
LA ?
Vegas 3
Florida ?
", header = TRUE)
答案 1 :(得分:1)
此问题可能重复,请参见此链接。
Filter multiple values on a string column in dplyr
无论如何:
library(dplyr)
df # your dataframe
cA <- df %>%
dplyr::filter(Autonumber != "?")
MAutonumber <- mean(df$Autonumber)
MAutonumberX <- mean(df$Autonumber, na.rm = T)
cB1 <- df %>%
dplyr::mutate(Autonumber = ifelse(Autonumber == "?", MAutonumber, Autonumber))
cB1 <- df %>%
dplyr::mutate(Autonumber = ifelse(Autonumber == "?", MAutonumberX, Autonumber))
请注意,有几种方法可以做您想要的事情。
答案 2 :(得分:0)
场景a和b放在一起:
else
确保其余数字是数字而不是因数