我正在尝试找出一个问题,以便在满足两个条件时替换现有内容。问题是:
以下三个位置是数据中最需要的三个位置:
我们希望将这些特定地点的交付物确定为热点。 通过重新标记“提取名称”来标记特定邮政编码的每次交付。带有新标签:
例如,pickup_name' Safeway'现在看起来像' Safeway-H2'在每个94107邮政编码。
我使用if函数,但它不起作用,代码是
if(which(problem$pickup_zipcode==94107) & which(problem$pickup_name=="Safeway")){
problem$pickup_name<-"Safeway-H2"
}
控制台说:
Warning messages:
1: In which(problem$pickup_zipcode == 94107) & which(problem$pickup_name == :
longer object length is not a multiple of shorter object length
2: In if (which(problem$pickup_zipcode == 94107) & which(problem$pickup_name == :
the condition has length > 1 and only the first element will be used
该数据集可通过此Google云端硬盘链接获取。
https://drive.google.com/open?id=1DEdJvAdACVv_Pc5IcgFBSGvDKm_GPrNE
答案 0 :(得分:2)
无需使用if语句。只需将数据子集化为您想要的数据,并将其设置为等于新值:
styles.scss
答案 1 :(得分:2)
使用dplyr
的解决方案。 mutate
是创建或更新列的功能。 case_when
是一种指定条件和替换的方法。假设您的数据框名为dt
。 dt2
是替换后的数据框。
library(dplyr)
dt2 <- dt %>%
mutate(pickup_name = case_when(
pickup_name %in% "Whole Foods Market" & pickup_zipcode %in% 94107 ~ paste0(pickup_name, "-H1"),
pickup_name %in% "Safeway" & pickup_zipcode %in% 94107 ~ paste0(pickup_name, "-H2"),
pickup_name %in% "Pizzeria Delfina" & pickup_zipcode %in% 94110 ~ paste0(pickup_name, "-H3"),
TRUE ~ pickup_name
))