[英]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.