检测字符串类型并据此创建新变量

Posted

技术标签:

【中文标题】检测字符串类型并据此创建新变量【英文标题】:Detect type of string and create new variable accordingly to it 【发布时间】:2022-01-05 09:47:06 【问题描述】:

所以我有一个密码数据集,如果密码与以下字符串之一匹配,我想创建一个新列(我正在使用 R)

id password   year     lenght
1  1 12345      2001       5
2  2 pass4      2002       5
3  3 angel      2003       5
4  4 pizza      2004       5

只有字母的密码模式:“^[a-zA-Z]+$”

只有数字的密码模式:“^[0-9]*$”

同时包含数字和字母的密码模式:'([0-9].[a-zA-Z])|([a-zA-Z].[0-9] )'

所以基本上我需要一个名为 TYPE 的新列,包含 3 个级别(数字、字母或两者)

我需要的是这个:

id password   year     lenght   Type
1  1 12345      2001       5.   numbers only    
2  2 pass4      2002       5.   both
3  3 angel      2003       5.   letters only
4  4 pizza      2004       5.   letters only

【问题讨论】:

我不明白您在寻找什么。你能展示你想要的输出吗? 好的,我放了一个我应该在最后得到的输出的例子 【参考方案1】:

您可以使用以下解决方案。请记住,我们将条件从最具体(两者)到最一般(其他两个条件之一):

library(dplyr)

df %>%
  mutate(Type = case_when(
    grepl("[A-Za-z]+", password) & grepl("[1-9]+", password) ~ "Both",
    grepl("[A-Za-z]+", password) ~ "Letters Only",
    grepl("[1-9]+", password) ~ "Numbers Only",
    TRUE ~ as.character(password)
  ))

  id password year lenght         Type
1  1    12345 2001      5 Numbers Only
2  2    pass4 2002      5         Both
3  3    angel 2003      5 Letters Only
4  4    pizza 2004      5 Letters Only

【讨论】:

不客气。如果它回答了您的问题,请考虑接受或投票。 我不能投票,因为我今天创建了我的帐户。它告诉我我需要至少 15 声望才能投票 谢谢,没关系。如果您有任何其他问题,请告诉我。

以上是关于检测字符串类型并据此创建新变量的主要内容,如果未能解决你的问题,请参考以下文章

PHP 的变量类型,变量检测

linux 可变类型与不可变类型

js如何判断变量的数据类型

js 的书写位置——三大核心——变量——输出语法——js 的数据类型——检测数据类型——数据类型转换——检测非数字的方法——运算符——条件分支 - if——条件分支 - switch

Python的可变类型与不可变类型

变量类型及检测