【问题标题】:revalue data with multiple conditions in r在 r 中重估具有多个条件的数据
【发布时间】:2019-09-13 16:40:54
【问题描述】:

我从dataframe 中提取了vectordf 看起来像这样:

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

还有vector

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

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

我尝试用dplyr::filter 查找vector

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

提前谢谢你!

【问题讨论】:

    标签: r vector filter dplyr string-concatenation


    【解决方案1】:

    你可以这样做:

    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")
    

    【讨论】:

    • 您好,我使用了您的代码。现在我注意到了一个错误。不知何故,“来自”列中的值也发生了变化。即使它不是向量的一部分。有人对此有什么想法吗?
    【解决方案2】:

    你可以这样做,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-08
      • 2021-08-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多