繁体   English   中英

从数据框中删除某些值

[英]Removing certain values from a data frame

我知道已经有一些这样的线程,但是我找不到任何解决方案。

我有一个看起来像这样的数据框:

    Name        Age     Sex     Survived
1   Allison     0.17    female  1
2   Leah        0.33    female  0
3   David       0.8     male    1
4   Daniel      0.83    male    1
5   Alex        0.83    male    1
6   Jay         0.92    male    1
7   Sara        16      female  1
8   Jade        15      female  1
9   Connor      17      male    1
10  Jon         18      male    1
11  Mary        8       female  1

我想删除小于1的年龄。我希望数据看起来像这样:

    Name        Age     Sex     Survived
1   Allison     NA      female  1
2   Leah        NA      female  0
3   David       NA      male    1
4   Daniel      NA      male    1
5   Alex        NA      male    1
6   Jay         NA      male    1
7   Sara        16      female  1
8   Jade        15      female  1
9   Connor      17      male    1
10  Jon         18      male    1
11  Mary        8       female  1

或者只删除年龄小于1的行。

按照其他解决方案,我尝试了此操作,但没有成功mydata[mydata$Age<"1"&&mydata$Age>"0"] <- NA

这是删除行的三种方法:

mydata[mydata$Age > 1, ]

subset(mydata, Age > 1)

filter(mydata, Age > 1)

这是使它们不适用的方法:

mydata$Age[mydata$Age < 1] <- NA

您的问题是您使用1作为字符(用引号引起来)。 字符少于/大于数字的工作方式与数字稍有不同,因此请小心。 另外,请确保您的“年龄”列为数字。 最好的方法是

mydata$Age <- as.numeric(as.character(mydata$Age))

这样您就不会意外弄乱因子变量。

编辑放错了标志。 现在固定

> mydata[mydata$Age<1, "Age"] <- NA
> mydata
      Name Age    Sex Survived
1  Allison  NA female        1
2     Leah  NA female        0
3    David  NA   male        1
4   Daniel  NA   male        1
5     Alex  NA   male        1
6      Jay  NA   male        1
7     Sara  16 female        1
8     Jade  15 female        1
9   Connor  17   male        1
10     Jon  18   male        1
11    Mary   8 female        1

更新资料

如果Age是因素,也许可以使用

mydata[as.numeric(as.character(mydata$Age))<1, "Age"] <- NA

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM