根据另一行的匹配从行复制值

问题描述 投票:0回答:1

花费大量时间来解决这个问题。本质上,同一项目有多个行。但是,只有一项包含所需的值。我需要将该值复制到所有匹配项。

例如。在下面,我需要项目100每行的费用为1203

df = data.frame("item" = c(100, 100, 100, 105, 105, 102, 102, 102),
                "cost" = c(1203, 0, 0, 66, 0, 1200, 0, 0))
> df
  item cost
1  100 1203
2  100    0
3  100    0
4  105   66
5  105    0
6  102 1200
7  102    0
8  102    0

例如:

df_wanted = data.frame("item" = c(100, 100, 100, 105, 105, 102, 102, 102),
                "cost" = c(1203, 1203, 1203, 66, 66, 1200, 1200, 1200))

> df_wanted
  item cost
1  100 1203
2  100 1203
3  100 1203
4  105   66
5  105   66
6  102 1200
7  102 1200
8  102 1200
r
1个回答
0
投票
library(dplyr)
df %>%
    group_by(item) %>%
    mutate(cost = cost[cumsum(cost != 0)]) %>%
    ungroup()
## A tibble: 8 x 2
#   item  cost
#  <dbl> <dbl>
#1   100  1203
#2   100  1203
#3   100  1203
#4   105    66
#5   105    66
#6   102  1200
#7   102  1200
#8   102  1200
© www.soinside.com 2019 - 2024. All rights reserved.