R:删除变量中的字符观察值

时间:2011-07-07 08:45:49

标签: r

我在数据框中有一个变量,其观察结果是数字和字符值的混合(由于数据输入错误)。我怎样才能只对数字的观察进行子集化?假设文件名$ varname的值是(1,2,1,5,3,a,3,d,1),我想将“a”和“d”子集化,并保留其余的值。数字。

2 个答案:

答案 0 :(得分:4)

您可以利用as.numeric将字符串转换为NA同时保留数字数据这一事实:

x <- c(1, 2, 1, 5, 3, "a", 3, "d", 1)
as.numeric(x)

[1]  1  2  1  5  3 NA  3 NA  1
Warning message:
NAs introduced by coercion 

现在使用is.na来测试NA值并使用向量子集排除这些值:

y <- as.numeric(x)
y[!is.na(y)]
[1] 1 2 1 5 3 3 1

答案 1 :(得分:1)

如果没有可重复的示例,很难看到您的数据实际上是什么样子。例如,您的数据框的列是一个因素还是只是字符串?如果它只是字符串,那么Andrie的答案是有效的(只需使用as.numeric()),如果数据是一个因素,首先需要将其转换为as.character(x)的字符串:

as.numeric(as.character(filename$varname))

你会得到一些NA但这绝对没问题,因为这些值确实缺失了。

编辑:澄清更多的abit。你有一个数据框,所以你不想从数据框中取出值,因为它不再是一个数据帧(相等的行)。您希望为缺失值正确分配NA,因为R中的大多数统计函数都可以处理它们。