我有以下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)
我们可以使用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)