如何检查变量的值是否包含数字与值是R中的数字

sah*_*oor 3 r contains

我有以下R数据框架.列"state"是因子列.我有两个问题:

1-我想创建一个标志,以确定每一行(状态值)是一个数字还是一个字符.1如果是字符,0如果是数字

ID   state
 1   123fg^>
 2   fhgfh@
 3   125@!
 4   125
Run Code Online (Sandbox Code Playgroud)

我希望输出看起来像这样

ID   state   Flag
 1   123fg^>    1
 2   fhgfh@     1
 3   125@!      1
 4   125        0
Run Code Online (Sandbox Code Playgroud)

2-接下来,如果单元格包含数字,我想创建1或0的标志.所以对于同一个例子,我希望得到以下输出

ID   state   Flag
 1   123fg^>    1
 2   fhgfh@     0
 3   125@!      1
 4   125        1
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们可以使用grep两种情况来匹配[0-9]+从start(^)到end($)的一个或多个数字()

as.integer(!grepl("^[0-9]+$", df$state))
#[1] 1 1 0
Run Code Online (Sandbox Code Playgroud)

[A-Za-z]+从开始到结束的一个或多个字母(),做一个否定(!)并将逻辑向量转换为二进制

as.integer(!grepl("^[A-Za-z]+$", df$state))
#[1] 1 0 1
Run Code Online (Sandbox Code Playgroud)

  • @sahboor新的问题/示例不在您的帖子中 (2认同)