假设我有一个包含2个变量的数据框,我试图在其上运行一些基本的摘要统计数据。我想运行一个循环来给出每个唯一值数的最小和最大秒值之间的差异。我的实际数据框架非常庞大,包含许多“数字”数字的值。所以单独进行子集化和运行并不是一个现实的选择。数据如下所示:
head
我的当前代码仅返回整个数据框架的最小和最大秒数之间的差值:
df <- data.frame(number=c(1,1,1,2,2,2,2,3,3,4,4,4,4,4,4,5,5,5,5),
seconds=c(1,4,8,1,5,11,23,1,8,1,9,11,24,44,112,1,34,55,109))
number seconds
1 1 1
2 1 4
3 1 8
4 2 1
5 2 5
6 2 11
7 2 23
8 3 1
9 3 8
10 4 1
11 4 9
12 4 11
13 4 24
14 4 44
15 4 112
16 5 1
17 5 34
18 5 55
19 5 109
答案 0 :(得分:3)
因为你有很多数据性能,所以你应该使用data.table而不是data.frame:
library(data.table)
dt <- as.data.table(df)
dt[, .(spread = (max(seconds) - min(seconds))), by=.(number)]
number spread
1: 1 7
2: 2 22
3: 3 7
4: 4 111
5: 5 108