簡體   English   中英

根據列值分組,然后將該組作為一行添加到 r 中的 dataframe

[英]Group by based on a column value and then add the group as a row to a dataframe in r

我有一個 dataframe 如下所示:

sample mu count
sample1 T 10
sample1 G 3
sample2 T 4
sample2 G 2

現在我想將這些數據分組如下:

        T G
sample1 10 3
sample2 4 2

樣本名稱作為行名,mu 值作為列名,計數值是所需 dataframe 中的單元格值。

我們可以使用來自base R xtabs xtabs

xtabs(count ~ sample + mu, df1)

-輸出

       mu
sample     G  T
  sample1  3 10
  sample2  2  4

或者使用tapply

with(df1, tapply(count, list(sample, mu), I))
        G  T
sample1 3 10
sample2 2  4

數據

df1 <- structure(list(sample = c("sample1", "sample1", "sample2", "sample2"
), mu = c("T", "G", "T", "G"), count = c(10L, 3L, 4L, 2L)), 
class = "data.frame", row.names = c(NA, 
-4L))
library(tidyverse)

df <- read_table("sample mu count
sample1 T 10
sample1 G 3
sample2 T 4
sample2 G 2")

df %>%  
  pivot_wider(names_from = mu, 
              values_from = count)

# A tibble: 2 x 3
  sample      T     G
  <chr>   <dbl> <dbl>
1 sample1    10     3
2 sample2     4     2

您可以使用dcast

library(data.table)
dcast(setDT(df),sample~mu,value.var="count")

Output:

    sample     G     T
    <char> <int> <int>
1: sample1     3    10
2: sample2     2     4

輸入:

df = structure(list(sample = c("sample1", "sample1", "sample2", "sample2"
), mu = c("T", "G", "T", "G"), count = c(10L, 3L, 4L, 2L)), row.names = c(NA, 
-4L), class = "data.frame")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM