美文网首页生信修炼
dplyr-pandas 分组变量处理

dplyr-pandas 分组变量处理

作者: caokai001 | 来源:发表于2019-09-29 11:01 被阅读0次

    目的:按照motif 进行分组,再计算value1 = value[2] / value[1] + value[2] / value[3]
    如motif A,计算0.66/.0.35+0.66/0.22

    image.png
    • python

    pandas 处理时,注意类型变换。agg 输入的类型是series,转成np.array 再进行切片

    image.png
    import pandas as pd
    import numpy as np
    import string
    
    data=pd.DataFrame({"chr" : [1]*12,
                       "start" : np.linspace(100, 210, 12),
                       "end" : np.linspace(110, 220, 12),
                       "value" : np.random.rand(12),
                       "motif" : list(string.ascii_letters[26:30]*3)})
    def s(df): 
         x=np.array(df) 
         L=x[0] 
         M=x[1] 
         R=x[2] 
         return (M+1)/(L+1)+(M+1)/(R+1) 
    
    In [61]: data.groupby("motif")["value"].apply(s)                                                                                      
    Out[61]: 
    motif
    A    2.844838
    B    2.184652
    C    1.923304
    D    1.965128
    Name: value, dtype: float64
    
    
    • R
    data <- data.frame(chr = rep(1, 12),
                       start = seq(100, 210, 10),
                       end = seq(110, 220, 10),
                       motif = rep(letters[1:4], each = 3),
                       value = sample(1:100, 12))
    data
    
    library(tidyverse)
    data %>%
      group_by(motif) %>%
      summarise(value1 = value[2] / value[1]  + value[2] / value[3])
    
    

    数据框R 更方便一些

    相关文章

      网友评论

        本文标题:dplyr-pandas 分组变量处理

        本文链接:https://www.haomeiwen.com/subject/jnqfpctx.html