如果单元格等于下面的单元格,则在R中执行操作

如果单元格等于下面的单元格,则在R中执行操作,r,R,在R中,我试图通过一个df,如果一列中的数据与它下面一行中的数据匹配,则使另一列中的数据也匹配。我还没有考虑过下面这样的FOR循环。其他选择是使用if语句,但我相信有更好的方法 For (row in 1:nrow(df)){ insert code here maybe} 下面是我的数据示例 id name 1 M1 2 M1 3 M1 4 M2 5 M2 我希望它看起来像这样 id name 1 M1 1 M1 1 M1 4 M2

在R中,我试图通过一个df,如果一列中的数据与它下面一行中的数据匹配,则使另一列中的数据也匹配。我还没有考虑过下面这样的FOR循环。其他选择是使用if语句,但我相信有更好的方法

For (row in 1:nrow(df)){ insert code here maybe}
下面是我的数据示例

id  name
1    M1
2    M1
3    M1
4    M2
5    M2
我希望它看起来像这样

id  name
1    M1
1    M1
1    M1
4    M2
4    M2

我们按“名称”分组,并将
变异为
到“id”,以获得
第一个
元素“id”

library(dplyr)
df1 %>%
   group_by(name) %>%
   mutate(id = first(id))

或使用
数据。表格

library(data.table)
setDT(df1)[, id := first(id), by = name]

或在
base R

df1$id <- with(df1, ave(id, name, FUN = function(x) x[1]))

df1$id工作正常,谢谢。没有循环和if语句的新循环,我永远不会那样做。
df1 <- structure(list(id = 1:5, name = c("M1", "M1", "M1", "M2", "M2"
  )), class = "data.frame", row.names = c(NA, -5L))