删除R中具有非数字列值的数据
所以我有一个数据集,包括某些人的肺活量。我试图分析数据分布和关系。唯一的问题是数据有些不完整。有些行包括“N/A”作为肺活量。这导致了一个问题,因为它导致不同子集的平均值和sd始终为“N/a”。如何将其形成一个子集,使其仅包含非N/a的数据 我试过这个:删除R中具有非数字列值的数据,r,R,所以我有一个数据集,包括某些人的肺活量。我试图分析数据分布和关系。唯一的问题是数据有些不完整。有些行包括“N/A”作为肺活量。这导致了一个问题,因为它导致不同子集的平均值和sd始终为“N/a”。如何将其形成一个子集,使其仅包含非N/a的数据 我试过这个: fData1 = read.table("lung.txt",header=TRUE) fData2= fData1[fData1$fev!="N/A"] 但这给了我一个“未定义列选择错误” 如何使数据集排除带有“N/a”的行 以下是我的数据
fData1 = read.table("lung.txt",header=TRUE)
fData2= fData1[fData1$fev!="N/A"]
但这给了我一个“未定义列选择错误”
如何使数据集排除带有“N/a”的行
以下是我的数据集的开头:
id age fev height male smoke
1 72 1.2840 66.5 1 1
2 81 2.5530 67.0 0 0
3 90 2.3830 67.0 1 0
4 72 2.6990 71.5 1 0
5 70 2.0310 62.5 0 0
6 72 2.4100 67.5 1 0
7 75 3.5860 69.0 1 0
8 75 2.9580 67.0 1 0
9 67 1.9160 62.5 0 0
10 70 NA 66.0 0 1
如果只想筛选出具有
NA
值的行,可以使用complete.cases()
:
一个选项是应用不包括NA值的操作:
dat <- read.table("lung.txt", header = T, na.strings = "NA")
mean(dat$fev, na.rm=T) # mean of fev col
sd(dat$fev, na.rm=T)
dat FWIWmean
和sd
都有一个na.rm
参数。该行需要一个逗号才能正常运行fData1[fData1$fev!=“N/A”,]
但我不明白为什么你认为NA
与“N/A”相同,而不是=不
我宁愿用!is.na()
。但是我怀疑@Psidom的答案应该可以解决您的问题。na.omit(fData1)
也会很好地工作。@RichardScriven肯定;-)
dat <- read.table("lung.txt", header = T, na.strings = "NA")
mean(dat$fev, na.rm=T) # mean of fev col
sd(dat$fev, na.rm=T)
fData1 <- na.omit(fData1)
fData1 <- na.exclude(fData1) # same result
fData2 <- fData1[is.na(fData1$fev), ]
fData2 <- subset(fData1, is.na(fData1$fev))