美文网首页生信修炼
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