我想添加一列,其中包含2个值(饮料或食物),并考虑到将输入值输入到常规语句中:
参考代码:
updated_df$Item <- ifelse(updated_df$`Category Name` == c('Diet Soda', 'Diet Soda Can', 'Hydration/Sports', 'Energy', 'Flavored Noncarb', 'Juice', 'Milk', 'New Age Beverage', 'Probiotic Beverage', 'RTD Coffee', 'Soda', 'Soda Can', 'Sparkling Beverage', 'Tea', 'Vitamin Enhanced', 'Water'), 'Beverage', ifelse(updated_df$`Category Name` == c('Candy', 'Cookies', 'Crackers', 'Food', 'Gum/Mints', 'Meat Sticks', 'Nutrition Bar', 'Nuts/Trailmix', 'Pastry', 'Salty Snacks'), 'Food'))
运行此语句时出现以下错误:
Error in ifelse(updated_df$`Category Name` == c("Candy", "Cookies", "Crackers", :
argument "no" is missing, with no default
任何帮助将不胜感激! R的新手。
答案 0 :(得分:2)
您需要这样的代码:
df$new <- ifelse(test1, 'A', ifelse(test2, 'B', 'C'))
目前您缺少该C选项。如果只有两个类别,可以将其简化为:
df$new <- ifelse(test1, 'A', 'B')
您的下一个问题是,您正在测试类别名称是否等于这些长列表的全部,我想您想测试类别名称是否等于条目之一。您想要:
df$value %in% c('a', 'b', 'c')
因此,在您的特定情况下:
drinks <- c('Diet Soda', 'Diet Soda Can', 'Hydration/Sports',
'Energy', 'Flavored Noncarb', 'Juice', 'Milk',
'New Age Beverage', 'Probiotic Beverage', 'RTD Coffee',
'Soda', 'Soda Can', 'Sparkling Beverage', 'Tea',
'Vitamin Enhanced', 'Water')
updated_df$Item <- ifelse(updated_df$`Category Name` %in% drinks, 'Beverage', 'Food')