对于每个具有2x的产品,如何将值乘以2呢?
Restaurant Product Value
1 a 3
1 b 2x 5
2 c 10
2 a 2x 2
我尝试过:
df = df %>%
mutate(Value=case_when(
Product =="2x"~ Value * 2,T~1))
答案 0 :(得分:3)
使用tidyverse,只需:
df %>% mutate(x=(1+str_detect(Product,"2x"))*Value)
# Restaurant Product Value x
#1 1 a 3 3
#2 1 b 2x 5 10
#3 2 c 10 10
#4 2 a 2x 2 4
答案 1 :(得分:3)
两个以R为底的选项:
# option 1:
df$Value <- df$Value * (grepl("2x", df$Product) + 1L)
# option 2:
ix <- grepl("2x", df$Product)
df$Value[ix] <- df$Value[ix] * 2L
给出:
> df Restaurant Product Value 1 1 a 3 2 1 b 2x 10 3 2 c 10 4 2 a 2x 4
使用dplyr:
df %>%
mutate(Value = Value * (grepl("2x", Product) + 1L))
答案 2 :(得分:3)
首先为那些具有2x的条目创建一个不同的列,然后检查具有2x值的列并更新相同的value列
df<-mutate(df, x=strsplit(Product, split = " ")[[1]][2])
df$Value[df$x=="2x"]<-2*df$Value[df$x=="2x"]