如果单元格等于下面的单元格,则在R中执行操作
在R中,我试图通过一个df,如果一列中的数据与它下面一行中的数据匹配,则使另一列中的数据也匹配。我还没有考虑过下面这样的FOR循环。其他选择是使用if语句,但我相信有更好的方法如果单元格等于下面的单元格,则在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
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))