如何使用R中的条件行填充值?

时间:2019-10-01 10:00:46

标签: r dataframe

我有以下数据框,

enter image description here

在这里,我想添加一列“ Constant Vol”,如果“ Year”列为2006,则“ Constant Vol”的所有值应为od 2006“ Vol”。结果应类似于以下数据框。

enter image description here

2 个答案:

答案 0 :(得分:1)

使用dplyr,我们可以group_by Seg并获得相应的Vol,其中Year = 2006

library(dplyr)

df %>%
  group_by(Seg) %>%
  mutate(Constnt_Vol = Vol[Year == 2006])

#  Seg    Year   Vol Constnt_Vol
#  <fct> <int> <dbl>       <dbl>
#1 Agri   2006    23          23
#2 Agri   2007    29          23
#3 Agri   2008    16          23
#4 Agri   2009    31          23
#5 Auto   2006    12          12
#6 Auto   2007    34          12
#7 Auto   2008    45          12
#8 Auto   2009    32          12

data.table中应该是

library(data.table)
setDT(df)[, Constnt_Vol :=  Vol[Year == 2006], Seg]

这是假设每个Year = 2006中只有Seg行,如果有多个行,我们可以使用which.max来获取第一行。 (Vol[which.max(Year == 2006)]

数据

df <- data.frame(Seg = rep(c("Agri", "Auto"), each  =4), 
       Year  =2006:2009, Vol = c(23, 29, 16, 31, 12, 34, 45, 32))

答案 1 :(得分:0)

我们可以使用

action.DragAndDropToOffset(el, 800, -300).Build().Perform();

数据

library(dplyr)
df %>%
   group_by(Seg) %>%
   mutate(Constnt_Vol = Vol[match(2006, Year)])