识别主要由非数字行组成的变量中的数字行
Identify numeric rows in variable mostly composed by non-numeric rows
我有一个数据框 df
,其中包含一个变量 Var.1
,主要由以下字符串变量组成
Var.1
RA305
RA430
RA773
RA7CQ
RA90J
.....
然而,这个变量也可能包含由唯一数字组成的因子(例如所有字符都是数字)。我想通过对后面的观察结果进行子集化来创建一个新的数据框,我想知道如何识别它们。我的尝试是
new_df = filter(df, !grepl("[:digit:]", Var.1))
但我仍然无法获得纯数字的观察结果。有什么建议吗?
我们可以使用^
和$
来指定grepl
中字符串的开始和结束。因为我们只 filter
只包含数字行,所以它应该只包含数字
filter(df, grepl("^[0-9]+$", Var.1))
在 OP 的方法中,[[:digit:]]+
缺少外部 []
。此外,它是非特定的,因为它可以 select 元素,这些元素可以是所有数字、带字符的数字等。因此,通过取反,我们可能会得到具有非数字元素的元素(与我们的相反)目标 - 假设数据集中有这些情况)
我有一个数据框 df
,其中包含一个变量 Var.1
,主要由以下字符串变量组成
Var.1
RA305
RA430
RA773
RA7CQ
RA90J
.....
然而,这个变量也可能包含由唯一数字组成的因子(例如所有字符都是数字)。我想通过对后面的观察结果进行子集化来创建一个新的数据框,我想知道如何识别它们。我的尝试是
new_df = filter(df, !grepl("[:digit:]", Var.1))
但我仍然无法获得纯数字的观察结果。有什么建议吗?
我们可以使用^
和$
来指定grepl
中字符串的开始和结束。因为我们只 filter
只包含数字行,所以它应该只包含数字
filter(df, grepl("^[0-9]+$", Var.1))
在 OP 的方法中,[[:digit:]]+
缺少外部 []
。此外,它是非特定的,因为它可以 select 元素,这些元素可以是所有数字、带字符的数字等。因此,通过取反,我们可能会得到具有非数字元素的元素(与我们的相反)目标 - 假设数据集中有这些情况)