If statement 如何基于R中的现有因子列添加和填充新列?

If statement 如何基于R中的现有因子列添加和填充新列?,if-statement,mutate,If Statement,Mutate,-我想添加一个物种列,并根据Id(一个因子列)使用“鹿”或“牛”填充该列 -我的动物ID是A或B,然后是628-637(奶牛)和80000(鹿)(例如A628、A82117) -任何Id低于1000、A或B的东西都应归类为“牛”,而其他所有东西都应归类为“鹿” 您可以尝试以下步骤: 获取ID的子字符串以提取数字部分 将子字符串强制转换为数字 使用数值生成动物类型列 您可以直接在R中执行此操作(如果ID表示为factor列,也可以执行此操作): ids Stefano,谢谢你的帮助。我现在正在

-我想添加一个物种列,并根据Id(一个因子列)使用“鹿”或“牛”填充该列

-我的动物ID是A或B,然后是628-637(奶牛)和80000(鹿)(例如A628、A82117)

-任何Id低于1000、A或B的东西都应归类为“牛”,而其他所有东西都应归类为“鹿”


您可以尝试以下步骤:

  • 获取ID的子字符串以提取数字部分
  • 将子字符串强制转换为数字
  • 使用数值生成动物类型列
您可以直接在R中执行此操作(如果ID表示为factor列,也可以执行此操作):


ids Stefano,谢谢你的帮助。我现在正在做。
ids <- factor(c('A630','B81000','A1200','B626'))
type <- unlist(lapply(ids, function(x) ifelse(as.numeric(substr(as.character(x), 2, nchar(as.character(x))))<1000, 'cow', 'deer')))
animals <- data.frame(ids=ids, type=factor(type))
is.factor(animals$type)
animals
CREATE TABLE ANIMALS
(
 ID VARCHAR(6)
);

INSERT INTO ANIMALS VALUES ('A628');
INSERT INTO ANIMALS VALUES ('A81000');
 
SELECT 
 ID,
 CASE WHEN CAST(SUBSTR(ID,2,LENGTH(ID)-1) as decimal) < 1000 THEN 'COW' ELSE 'DEER' END AS TYPE
FROM ANIMALS A;
CREATE TABLE CLASSIFIED_ANIMALS AS
SELECT 
  ID,
  CASE WHEN CAST(SUBSTR(ID,2,LENGTH(ID)-1) as decimal) < 1000 THEN 'CAW' ELSE 'DEER' END as TYPE
FROM ANIMALS A;