[英]Data frame grouping using Group by or Aggregate in R
我希望通過我擁有的當前數據框創建下表。 我目前的數據框如下
ID = c(rep("A",3), rep("B",5), rep("C",4))
NRT = c(3,3,4,5,5,3,3,4,3,3,5,5)
df = as.data.frame(cbind(ID,NRT))
ID | NRT |
---|---|
一個 | 3 |
一個 | 3 |
一個 | 4 |
乙 | 5 |
乙 | 5 |
乙 | 3 |
乙 | 3 |
乙 | 4 |
C | 3 |
C | 3 |
C | 5 |
C | 5 |
我想獲得如下表格,其中顯示每個唯一 ID 的 NRT 平均值
ID | NRT(平均) |
---|---|
一個 | 3.33(A 的 NRT 平均值) |
乙 | 4(B 的 NRT 平均值) |
C | 4(C 的 NRT 平均值) |
提前感謝大家的幫助:)
如果您考慮使用data.table
而不是data.frame
(請注意data.table
繼承自data.frame
),這是最容易實現的
library(data.table)
ID = c(rep("A",3), rep("B",5), rep("C",4))
NRT = c(3,3,4,5,5,3,3,4,3,3,5,5)
df = as.data.frame(cbind(ID,NRT))
dt <- as.data.table(df)
dt[, list("NRT (Average)" = mean(NRT)), by = ID]
ID NRT (Average)
1: A 3.333333
2: B 4.000000
3: C 4.000000
如果您希望表格完全按照您發布的方式打印,您可以執行以下操作
library(data.table)
dt <- data.table(ID = c(rep("A",3), rep("B",5), rep("C",4)), NRT = c(3,3,4,5,5,3,3,4,3,3,5,5))
dt[, "NRT(Average)" := paste0(mean(NRT), " (average for NRT for ", ID, ")"), by = ID]
dt[, .SD[1], by = ID][, c(1, 3)]
ID NRT(Average)
1: A 3.33333333333333 (average for NRT for A)
2: B 4 (average for NRT for B)
3: C 4 (average for NRT for C)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.