переоценить данные с несколькими условиями в г - PullRequest
2 голосов
/ 24 апреля 2019

Я извлек vector из dataframe. df выглядит так:

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

и vector:

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

Теперь я хочу найти значения, определенные vector в df. Если значение в 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 ]

3 голосов
/ 24 апреля 2019

Вы можете сделать:

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 голос
/ 24 апреля 2019

Вы можете просто сделать,

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)])
...