我有一个这样的数据框:
data<- data.frame(ID= seq(1,12, 1),
plantfam= c(1,1,2,2,1,1,1,1,2,2,3,3),
lepsp= c(rep("A", 4), "B", "B", rep("C", 6)),
needsmorpho= c(rep("yes", 4),"no", "no", rep("yes", 6)))
我需要先过滤所有needsmorpho
这些yes
。然后,我需要将所有这些lepsp
都归为同一类plantfam
。对于每一个独特的lepsp
和plantfam
匹配lepsp
将被赋予一个唯一的形态种名。为了创建一个morphosp名称,我想粘贴morphosp
一个唯一的数字,并基于唯一性lepsp
和plantfam
匹配项。输出为:
output<- data.frame(ID= seq(1,12, 1),
plantfam= c(1,1,2,2,1,1,1,1,2,2,3,3),
lepsp= c("A_morpho1","A_morpho1","A_morpho2","A_morpho2",
"B","B","C_morpho1","C_morpho1",
"C_morpho2","C_morpho2","C_morpho3","C_morpho3"),
needsmorpho= c(rep("yes", 4),"no", "no", rep("yes", 6)))
我努力了:
subset1 <-
file %>%
filter(NeedsMorpho == "yes") %>%
group_by(lepsp) %>%
mutate(lepsp =
paste0(lepsp,"_morphosp",match(plantfam,unique(plantfam))))
subset2 <-
file %>%
filter(NeedsMorpho == "yes") %>%
setdiff(file, .)
file<-union(subset1, subset2) %>% arrange(lepsp)
这样可以实现您的追求吗?
library( data.table )
setDT(data)
data[ needsmorpho == "yes", lepsp := paste0(lepsp,"_morphosp",plantfam) ]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句