5
我有一個數據框,我想將一列值拆分爲n
組。所以,我有一個列data$dist
約10K記錄,其中最大值爲23180和最小值8951.我想將這些值分成10個等分範圍的組,即(23180-8951)/ 10 = 1423.這意味着8951和10374之間的所有值都歸入1組。等等。我該怎麼做?R將數據劃分爲組
我有一個數據框,我想將一列值拆分爲n
組。所以,我有一個列data$dist
約10K記錄,其中最大值爲23180和最小值8951.我想將這些值分成10個等分範圍的組,即(23180-8951)/ 10 = 1423.這意味着8951和10374之間的所有值都歸入1組。等等。我該怎麼做?R將數據劃分爲組
您可以使用cut
和split
,如下面的玩具例子:
set.seed(2015)
d <- data.frame(i=1:20,z=runif(20))
# i z
# 1 1 0.06111892
# 2 2 0.83915986
# 3 3 0.29861322
# 4 4 0.03143242
# 5 5 0.13857171
# 6 6 0.35318471
# 7 7 0.49995552
# 8 8 0.07707116
# 9 9 0.65134483
# 10 10 0.51172371
# 11 11 0.70285557
# 12 12 0.39172125
# 13 13 0.03306277
# 14 14 0.40940319
# 15 15 0.74234713
# 16 16 0.88301877
# 17 17 0.26623321
# 18 18 0.07427093
# 19 19 0.81368426
# 20 20 0.38194719
split(d,cut(d$i,seq(0,20,length.out=5)))
# $`(0,5]`
# i z
# 1 1 0.06111892
# 2 2 0.83915986
# 3 3 0.29861322
# 4 4 0.03143242
# 5 5 0.13857171
#
# $`(5,10]`
# i z
# 6 6 0.35318471
# 7 7 0.49995552
# 8 8 0.07707116
# 9 9 0.65134483
# 10 10 0.51172371
#
# $`(10,15]`
# i z
# 11 11 0.70285557
# 12 12 0.39172125
# 13 13 0.03306277
# 14 14 0.40940319
# 15 15 0.74234713
#
# $`(15,20]`
# i z
# 16 16 0.88301877
# 17 17 0.26623321
# 18 18 0.07427093
# 19 19 0.81368426
# 20 20 0.38194719
見'quantile' – ctbrown
見'cut',用'seq'使用它?。如果您希望每個羣組的觀測值數量相等,則可以使用「分位數」而不是「seq」,而不是每個羣組的等值範圍。 – Gregor