R 由于另一列中的值,我有重复的ID
由于另一列中存在多种类型,ID重复。我想删除重复的ID,并为特定类型设置一个指示符列。如果可能,我们很乐意在R和SAS中看到解决方案。以下是我所拥有和需要的:R 由于另一列中的值,我有重复的ID,r,dplyr,sas,tidyverse,R,Dplyr,Sas,Tidyverse,由于另一列中存在多种类型,ID重复。我想删除重复的ID,并为特定类型设置一个指示符列。如果可能,我们很乐意在R和SAS中看到解决方案。以下是我所拥有和需要的: have<-data.frame(id=c(1,1,2,3,3,3,4,5,5,6)) have$type<-c("healthy","healthy","injury1","healthy","injury2", "injury1","healthy","injury2","healthy","injury
have<-data.frame(id=c(1,1,2,3,3,3,4,5,5,6))
have$type<-c("healthy","healthy","injury1","healthy","injury2",
"injury1","healthy","injury2","healthy","injury2")
need<-data.frame(id=c(1,2,3,4,5,6))
need$injury_ind<-c(0,1,1,0,1,1)
have在R
中,我们可以使用stru-detect
(或grepl
)在按“id”分组后检测“type”中的“injury”
library(dplyr)
library(stringr)
have %>%
group_by(id) %>%
summarise(injury_id = +(any(str_detect(type, 'injury'))))
# A tibble: 6 x 2
# id injury_id
# <dbl> <int>
#1 1 0
#2 2 1
#3 3 1
#4 4 0
#5 5 1
#6 6 1
或者在不分组的情况下,我们可以使用grepl
查找具有“伤害”类型的“id”,并检查唯一的
“id”中包括哪些
un1 <- unique(have$id)
data.frame(id = un1, injury_id = +(un1 %in%
unique(have$id[grepl('injury', have$type)])))
un1是否可以在str_detect()?@Tun3In_N0w中使用or运算符“|”。是的,这是可能的<代码>str|u detect(键入'injury | something')
我正在尝试使用str|u detect(键入“injury1 | injury2”)获取dplyr样式的内容@Tun3In\u N0w您不需要执行injury1
injury2
等操作,因为str\u detect
与子字符串injury
匹配,无论哪里有伤害,它都能为您提供预期的输出,谢谢您的帮助。我做过很多类似的事情。种类不多,而且通常提前知道。所以,我不需要发短信了。我想你需要澄清这个问题。ID 3和5都是健康和受伤的。如果这是有意的,我认为您需要更多地说明数据代表了什么,以及您试图实现什么。
un1 <- unique(have$id)
data.frame(id = un1, injury_id = +(un1 %in%
unique(have$id[grepl('injury', have$type)])))