我正在研究一个非常大的data.frame,其中有几个用于个人。我需要做的是获取每个人的数字范围。我的数据集大约有500,000行的6列,并且我想保留一些额外的信息。我提供了data.frame设置的摘要版本。预先感谢!
我所拥有的是一列ID和一列数字(例如:1-500)。每个ID都有与之关联的不同数量的数字:
ID Number Group Date
A 1 K 1-19-2019
A 2 K 1-19-2019
A 3 K 1-19-2019
A 4 K 1-19-2019
A 5 K 1-19-2019
A 6 K 1-19-2019
B 10 K 1-19-2019
B 11 K 1-19-2019
C 12 J 1-19-2019
C 13 J 1-19-2019
C 14 J 1-19-2019
C 15 J 1-19-2019
C 16 J 1-19-2019
A 20 K 1-20-2019
A 21 K 1-20-2019
A 22 K 1-20-2019
A 23 K 1-20-2019
我需要什么:
ID Min Max Group Date
A 1 6 K 1-19-2019
A 20 23 K 1-19-2019
B 10 11 K 1-19-2019
C 12 16 J 1-20-2019
我尝试了一些事情,包括:
在dplyr中分组
test <-data %>%
group_by(ID)%>%
top_n(n=1))
套用并合并
max<- tapply(data$Number, tags.I$ID, max)
min<- tapply(data$Number, tags.I$ID, min)
test2 <- full_join(min, max, by=ID)
我从test1得到的是原始数据集。 Test2可以运行,但是如果有ID重复,则会错过。
答案 0 :(得分:0)
我将使用data.table包:
library(data.table)
data <- as.data.table(data)
test <- data[, .(Min=min(Number), Max=max(Number)), by=.(ID,Group,Date)]
最好!