[英]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.