在r

时间:2019-04-24 11:33:13

标签: r vector filter dplyr string-concatenation

我从vector中提取了dataframedf看起来像这样:

from  type
 23    U
 25    U
 30    S
 32    S
 50    T
 60    T

vector

vec<-c("23","30","50")

现在,我要搜索vectordf定义的值。 如果df中的值是vector的一部分,那么我想将type变量粘贴到from变量的前面。

我试图用vector查找dplyr::filter

df<-df %>% filter(from %in% vec && type=="U") %>% mutate(from=paste(type,from,sep=""))

现在我不知道如何进行,因为我的方法行不通。不确定if-else语句是否更合适。

预期结果是:

from  type
 U23   U
 25    U
 S30   S
 32    S
 T50   T
 60    T

提前谢谢!

2 个答案:

答案 0 :(得分:3)

您可以这样做:

df %>% 
  mutate(from = ifelse(from %in% vec, paste0(type, from), from))

  from type
1  U23    U
2   25    U
3  S30    S
4   32    S
5  T50    T
6   60    T

数据:

df <- read.table(text = "
 from  type
 23    U
 25    U
 30    S
 32    S
 50    T
 60    T", h =T)


vec<-c("23","30","50")

答案 1 :(得分:1)

您可以轻松完成

df$from[df$from %in% as.numeric(vec)] <- paste0(df$type[df$from %in% as.numeric(vec)], 
                                                df$from[df$from %in% as.numeric(vec)])