我这里有面板数据.对于一个‘名字’,我想将新的一天的产品与所有前一天的产品进行比较.如果它们不同,则该行中新创建的值将为1,否则为0.我粗略地知道需要Mariate(),但不知道如何将第二天的所有产品与第一天的所有产品进行比较.任何帮助都将非常感谢!

这是我的意思的一个例子.第2天的产品"a"和"b"与第1天的产品是冗余的,因此"new_product"的值为0.而第6行的值为1,因为产品d从第1天开始不重复.

data <- matrix(c('name1', 'name1', 'name1',
                 'name1', 'name1', 'name1',
                 '1', '1', '1', '2', '2', '2',
                 'a', 'b', 'c', 
                 'a', 'b', 'd'), nrow = 6, ncol = 3)

colnames(data) <- c('name', 'day', 'product')
data
#>      name    day product
#> [1,] "name1" "1" "a"    
#> [2,] "name1" "1" "b"    
#> [3,] "name1" "1" "c"    
#> [4,] "name1" "2" "a"    
#> [5,] "name1" "2" "b"    
#> [6,] "name1" "2" "d"


ideal_data <- matrix(c('name1', 'name1', 'name1',
                 'name1', 'name1', 'name1',
                 '1', '1', '1', '2', '2', '2',
                 'a', 'b', 'c', 
                 'a', 'b', 'd',
                 '0', '0', '0', '0', '0', '1'), nrow = 6, ncol = 4)

colnames(ideal_data) <- c('name', 'day', 'product', 'new_product')
ideal_data
#>      name    day product new_product
#> [1,] "name1" "1" "a"     "0"        
#> [2,] "name1" "1" "b"     "0"        
#> [3,] "name1" "1" "c"     "0"        
#> [4,] "name1" "2" "a"     "0"        
#> [5,] "name1" "2" "b"     "0"        
#> [6,] "name1" "2" "d"     "1"

推荐答案

一种 Select 是判断产品何时以及是否首先上市:

library(dplyr, warn = FALSE)

data |>
  as.data.frame() |>
  mutate(
    new_product = +(day > 1 & row_number() == 1),
    .by = product
  )
#>    name day product new_product
#> 1 name1   1       a           0
#> 2 name1   1       b           0
#> 3 name1   1       c           0
#> 4 name1   2       a           0
#> 5 name1   2       b           0
#> 6 name1   2       d           1

R相关问答推荐

R的GG平行坐标图中的排序变量

根据shiny 应用程序中的数字输入更改图标 colored颜色

geom_Ribbon条件填充创建与数据不匹配的形状(ggplot 2 r)

如何删除多个.CSV文件的行

r中的stat_difference函数不起作用

编辑文件后编辑RhandsonTable

如何使用R中的dhrr函数将李克特量表的因子列从长转换为宽?

如何在R中对深度嵌套的tibbles中的非空连续行求和?

如何优化向量的以下条件赋值?

如果可能,将数字列转换为整数,否则保留为数字

如何计算R glm probit中的线性预测因子?

如何使用字符串从重复的模式中提取多个数字?

变长向量的矢量化和

无法将条件case_when()应用于使用!!创建的新变量Mutations

网络抓取新闻标题和时间

使用LAG和dplyr执行计算,以便按行和按组迭代

以R表示的NaN值的IS.NA状态

动态统计函数在ShinyApp内部更改

R:改进实现简单模型

如何将数据框压缩为更宽,同时将行输入保持为行输入,而不是R中的列名?