自定义函数在mutate dplyr中无法正常工作
嗨,我有这样的映射数据自定义函数在mutate dplyr中无法正常工作,r,dplyr,tidyverse,R,Dplyr,Tidyverse,嗨,我有这样的映射数据 mapDATA: no definition 0 group1 7 group2 12 group3 mainDATA: id no A 0 B 8 C 12 主要数据是这样的 mapDATA: no definition 0 group1 7 group2 12 group3 mainDATA: id no A 0 B 8 C 12 预期数据 id no definition
mapDATA:
no definition
0 group1
7 group2
12 group3
mainDATA:
id no
A 0
B 8
C 12
主要数据是这样的
mapDATA:
no definition
0 group1
7 group2
12 group3
mainDATA:
id no
A 0
B 8
C 12
预期数据
id no definition
A 0 group1
B 8 group2
C 12 group3
我尝试创建函数并在mutate中使用它
getDefinition <- function(no_n, df){
for(i in 1:nrow(df)) {
no <- as.double(df[i,1])
if(no < no_n | no == no_n) {
def <- as.character(df[i,2])
} else {
break
}
}
return(def)
}
mainDATA <- mainDATA %>%
mutate(definition = getDefinition(no, mapDATA))
warning
the condition has length > 1 and only the first element will be used
getDefinition我们可以使用cut
/findInterval
mainDATA$definition <- cut(mainDATA$no, c(mapdata$no,Inf),
labels = mapdata$definition, right = FALSE)
mainDATA
# id no definition
#1 A 0 group1
#2 B 8 group2
#3 C 12 group3
mainDATA$definition <- mapdata$definition[findInterval(mainDATA$no, mapdata$no)]
我们可以使用cut
/findInterval
mainDATA$definition <- cut(mainDATA$no, c(mapdata$no,Inf),
labels = mapdata$definition, right = FALSE)
mainDATA
# id no definition
#1 A 0 group1
#2 B 8 group2
#3 C 12 group3
mainDATA$definition <- mapdata$definition[findInterval(mainDATA$no, mapdata$no)]