nrow(train) [1] 891 > nrow(-6ren">
gpt4 book ai didi

r - 在 data.frame 中过滤 NAs 值

转载 作者:行者123 更新时间:2023-12-04 02:17:21 24 4
gpt4 key购买 nike

我想过滤所有年龄为“NA”的数据。所以我使用了 train[train$Age != "NA",] 它总是返回完整的数据帧。

[1] 891
> nrow(train)
[1] 891
> nrow(train[train$Age == "NA",])
[1] 177
> nrow(train[train$Age != "NA",])
[1] 891

我正在学习 R,我对一个观点印象深刻。我知道它很基础,但我自己或谷歌都无法弄明白。

数据集样本

     PassengerId Survived Pclass                                                Name    Sex Age SibSp Parch           Ticket
1 1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171
2 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38 1 0 PC 17599
3 3 1 3 Heikkinen, Miss. Laina female 26 0 0 STON/O2. 3101282
4 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0 113803
5 5 0 3 Allen, Mr. William Henry male 35 0 0 373450
6 6 0 3 Moran, Mr. James male NA 0 0 330877

最佳答案

此示例可能会有所帮助,它向您展示了针对 "NA"(有效字符串)的测试如何生成实际的 NA(缺失)值,这些值会填满您的选择行数。

train <- data.frame(id=1:5, Age=c(1:3,NA,5))
train
# id Age
#1 1 1
#2 2 2
#3 3 3
#4 4 NA
#5 5 5

train$Age=="NA"
#[1] FALSE FALSE FALSE NA FALSE

train[train$Age=="NA",]
# id Age
#NA NA NA

train$Age!="NA"
#TRUE TRUE TRUE NA TRUE

train[train$Age!="NA",]
# id Age
#1 1 1
#2 2 2
#3 3 3
#NA NA NA
#5 5 5

您实际上想使用 is.na 进行测试:

is.na(train$Age)
#[1] FALSE FALSE FALSE TRUE FALSE

!is.na(train$Age)
#[1] TRUE TRUE TRUE FALSE TRUE

train[!is.na(train$Age),]
# id Age
#1 1 1
#2 2 2
#3 3 3
#5 5 5

关于r - 在 data.frame 中过滤 NAs 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33117502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com