我有一个泰坦尼克号 xlsx 文件,其中有很多空白或空单元格,我将文件保存为 csv,所有空白均按原样保存。
当我导入 csv 文件时,我在数据集中看到很多空字符串/空白,其中一列是Boat
我可以直接使用 readxl 包的函数,例如 read_xls 或 read_xlsx,它将用 NA 替换空字符串
但我想知道是否有办法在加载到数据帧中的 R 后替换空字符串。
我尝试了这种方法,但它抛出了错误,我不太明白。我可以在下面的代码中在“NA”中指定 NA,然后它将替换为 NA,但这将是字符串(NA)而不缺少值 NA,两者都会不同。
titanic %>% mutate(boat = if_else(boat=="", NA ,boat))
Error in mutate_impl(.data, dots) :
Evaluation error: `false` must be type logical, not character.
Run Code Online (Sandbox Code Playgroud)
通过仅指定NA,根据?NA-“NA 是长度为 1 的逻辑常量,其中包含缺失值。”
可以class检查一下
class(NA)
#[1] "logical"
class(NA_character_)
#[1] "character"
Run Code Online (Sandbox Code Playgroud)
并且它们都由标准函数识别,例如is.na
is.na(NA)
#[1] TRUE
is.na(NA_character_)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)
是if_else类型敏感的,因此不必指定 asNA返回逻辑输出,而是可以指定为NA_real_, NA_integer_,NA_character_具体取决于 'boat' 列的类型。假设“船”是character一流的,我们可能需要NA_character_
titanic %>%
mutate(boat = if_else(boat=="", NA_character_ ,boat))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4791 次 |
| 最近记录: |