使用变量/列i R的唯一值循环所有观测值

使用变量/列i R的唯一值循环所有观测值,r,R,我的数据集如下所示: 链条 产品 周 销售额 链1 产品1 1. 0 链1 产品1 2. 0 -------- -------- ----- ----- 链1 产品1 51 10 链1 产品1 52 14 链2 产品1 1. 10 链2 产品1 2. 11 -------- -------- ----- ----- 链2 产品1 51 12 链2 产品1 52 15 链1 产品2 1. 3. 链1 产品2 2. 4. -------- -------- ----- ----- 链1 产品2 51

我的数据集如下所示:

链条 产品 周 销售额 链1 产品1 1. 0 链1 产品1 2. 0 -------- -------- ----- ----- 链1 产品1 51 10 链1 产品1 52 14 链2 产品1 1. 10 链2 产品1 2. 11 -------- -------- ----- ----- 链2 产品1 51 12 链2 产品1 52 15 链1 产品2 1. 3. 链1 产品2 2. 4. -------- -------- ----- ----- 链1 产品2 51 8. 链1 产品2 52 10 链2 产品2 1. 11 链2 产品2 2. 12 -------- -------- ----- ----- 链2 产品2 51 15 链2 产品2 52 7.
对于每个
链中的每个
产品
,我们可以找到第一次
销售
值大于0的行,并将该行值更改为1。如果您的数据被称为
df

library(dplyr)

df %>%
  group_by(Chain, Product) %>%
  mutate(I = as.integer(row_number() == match(TRUE, Sale > 0))) -> result

result

对于每个
链中的每个
产品
,我们可以找到第一次
销售
值大于0的行,并将该行值更改为1。如果您的数据被称为
df

library(dplyr)

df %>%
  group_by(Chain, Product) %>%
  mutate(I = as.integer(row_number() == match(TRUE, Sale > 0))) -> result

result

我们可以使用
base R

df$I <- with(df, ave(Sale > 0, Chain, Product, FUN = which.max))
df$I 0,链,产品,乐趣=哪个.max))

我们可以使用
基本R

df$I <- with(df, ave(Sale > 0, Chain, Product, FUN = which.max))
df$I 0,链,产品,乐趣=哪个.max))

谢谢,这很有效!我刚刚添加了一个代码,以确保如果销售一开始就已经大于0,那么“I”在第一周不会为1。谢谢,这很有效!我只需要添加一个代码,以确保如果销售一开始就已经大于0,那么第一周“I”将不会为1。