如何查看前一行以查看它是否是重复值,但只有在R中重复3次或更多次时才将其标记为TRUE

kqqjbcuj  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(131)

我希望我的数据将一个月视为一个组,如果某个值在该月重复3次或更多次,则将我的新列标记为“重复”。下面是我的输出示例。

data2 <- data.frame("Month" = c("Jan", "Jan", "Jan", "Jan", "Feb", "Feb", "Feb", "Feb", 
"Feb"), "Value" = c(1, 2, 2, 2, 2, 2, 4, 4, 4), "Repeating" = c(FALSE, TRUE, TRUE, 
TRUE, FALSE, FALSE, TRUE, TRUE, TRUE))

非常感谢你的帮助!我不知道如何让它寻找3个或更多的重复值,而不仅仅是一对。

bxgwgixi

bxgwgixi1#

按月份和值分组,并使用n检查计数:

library(dplyr)
data2 %>% 
  group_by(Month, Value) %>% 
  mutate(Repeating = n() >= 3) %>% 
  ungroup()

  Month Value Repeating
  <chr> <dbl> <lgl>    
1 Jan       1 FALSE    
2 Jan       2 TRUE     
3 Jan       2 TRUE     
4 Jan       2 TRUE     
5 Feb       2 FALSE    
6 Feb       2 FALSE    
7 Feb       4 TRUE     
8 Feb       4 TRUE     
9 Feb       4 TRUE
ffscu2ro

ffscu2ro2#

我们可以使用add_count

library(dplyr)
data2 %>% 
  add_count(Month, Value, name = "Repeating") %>%
   mutate(Repeating = Repeating >=3)
  • 输出
Month Value Repeating
1   Jan     1     FALSE
2   Jan     2      TRUE
3   Jan     2      TRUE
4   Jan     2      TRUE
5   Feb     2     FALSE
6   Feb     2     FALSE
7   Feb     4      TRUE
8   Feb     4      TRUE
9   Feb     4      TRUE

或者使用data.table

library(data.table)
setDT(data2)[, Repeating := .N >= 3, .(Month, Value)]

相关问题