簡體   English   中英

使用變量/列 i R 的唯一值循環所有觀察值

[英]Loop over all observations with a unique value of a variable/column i 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 8
鏈1 產品2 52 10
鏈2 產品2 1 11
鏈2 產品2 2 12
-------- -------- ----- -----
鏈2 產品2 51 15
鏈2 產品2 52 7

這意味着我每周都會觀察不同產品和連鎖店的銷售情況。 我想創建一個創新虛擬變量,當推出新產品時它等於 1。 第 51 周的鏈 1 中的產品 1 就是這種情況(這里,假設第 2 周和第 50 周之間的銷售額為 0,第 51 周的銷售額從 0 變為 10)。 然后我希望我的假人 I 為 1:

產品 星期 銷售量
鏈1 產品1 1 0 0
鏈1 產品1 2 0 0
-------- -------- ----- ----- -
鏈1 產品1 51 10 1
鏈1 產品1 52 14 0
鏈2 產品1 1 10 0
鏈2 產品1 2 11 0
-------- -------- ----- ----- -
鏈2 產品1 51 12 0
鏈2 產品1 52 15 0
鏈1 產品2 1 3 0
鏈1 產品2 2 4 0
-------- -------- ----- ----- -
鏈1 產品2 51 8 0
鏈1 產品2 52 10 0
鏈2 產品2 1 11 0
鏈2 產品2 2 12 0
-------- -------- ----- ----- -
鏈2 產品2 51 15 0
鏈2 產品2 52 7 0

我想我應該創建一個循環,循環遍歷每個鏈中每種產品的每周銷售觀察結果,並檢測銷售何時從 0 開始,然后更改為某個值。 這應該如何在 R 中完成?

謝謝你。

對於每個Chain中的每個Product ,我們可以找到第一次Sale值大於 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM