R:如何用 df 中第一行的值替换组中的所有行

R: How to replace all rows in a group with a value from first row in a df

我有一个 df,我想用第一个 instance/row pr 组中的值替换组中的所有行。

例如。对于 mtcars 数据集,我想为每组 carb 创建一个新变量 carb_1,将 carb 列中的所有值替换为来自 qsec 的值,第一行为 carb(例如 18.61 为 carb ==1):

library(dplyr)
mtcars %>%
  arrange(carb, qsec)

我已经尝试使用 mutate 和 top_n 的 dplyr 组合,但它没有提供正确的结果:


mtcars %>%
   group_by(carb)%>%
   mutate(carb_1 = top_n(mtcars, 1,qsec ))

#or

mtcars %>%
   group_by(carb)%>%
   mutate(carb_1 = top_n(mtcars, 1,carb))

carb==1 的预期结果类似于这样,对于 carb==2 的所有行:16.70 等等...

df_expected <- mtcars
df_expected$carb_1 <- ifelse(df_expected$carb==1, 18.61, df_expected$carb)
df_expected

提前致谢!

dplyr

中有一个first函数
mtcars %>%
  group_by(carb)%>%
  mutate(carb_1 = first(qsec))

虽然如果您通过 qsec 订购,您也可以使用 min