我正在嘗試剪切資料以進行頻率分布,但剪切后,所有資料都被分配到一個間隔
points <- 224 * 0:5
cut_data <- cut(rs$amount, points ,dig.lab = 10)
我的 rs$amount 資料:
integer64
[1] 517 200 391 186 262 1020 791 124 437 238 896 212 144 529 523 190
我得到這樣的東西
> cut_data
[1] (0,224] (0,224] (0,224] (0,224] (0,224] (0,224] (0,224] (0,224] (0,224] (0,224] (0,224] (0,224] (0,224] (0,224]
[15] (0,224] (0,224]
Levels: (0,224] (224,448] (448,672] (672,896] (896,1120]
我做錯了什么
編輯:
dput() 在 rs$amount 上的結果
structure(c(2.55431938899924e-321, 9.88131291682493e-322, 1.93179667523927e-321,
9.18962101264719e-322, 1.29445199210407e-321, 5.03946958758071e-321,
3.90805925860426e-321, 6.12641400843146e-322, 2.15906687232625e-321,
1.17587623710217e-321, 4.42682818673757e-321, 1.04741916918344e-321,
7.11454530011395e-322, 2.61360726650019e-321, 2.58396332774972e-321,
9.38724727098368e-322), class = "integer64")
編輯2:
將 rs$amount 轉換為數字有助于解決問題
cut_data <- cut(as.numeric(rs$amount),points,dig.lab = 10)
uj5u.com熱心網友回復:
我認為您有兩種選擇:使用cut(as.numeric(vec),...)或findInterval。
as.numeric
如果您不擔心在轉換為時會遇到理論精度損失(可能很難發現這種情況),那么您可以轉換integer64為:numericnumeric
cut(as.numeric(vec), points ,dig.lab = 10)
# [1] (448,672] (0,224] (224,448] (0,224] (224,448] (896,1120] (672,896] (0,224] (224,448] (224,448] (672,896] (0,224] (0,224] (448,672] (448,672] (0,224]
# Levels: (0,224] (224,448] (448,672] (672,896] (896,1120]
查找間隔
table(cut(vec, points ,dig.lab = 10))
# (0,224] (224,448] (448,672] (672,896] (896,1120]
# 16 0 0 0 0
table(findInterval(vec, points))
# 1 2 3 4 5
# 6 4 3 1 2
您可以對此進行模擬以手動生成格式相似的因子:
labels <- sprintf("(%i,%i]", points[-length(points)], points[-1])
labels
# [1] "(0,224]" "(224,448]" "(448,672]" "(672,896]" "(896,1120]"
factor(labels[findInterval(vec, points)], labels = labels)
# [1] (448,672] (0,224] (224,448] (0,224] (224,448] (896,1120] (672,896] (0,224] (224,448] (224,448] (896,1120] (0,224] (0,224] (448,672] (448,672] (0,224]
# Levels: (0,224] (224,448] (448,672] (672,896] (896,1120]
資料
vec <- structure(c(2.55431938899924e-321, 9.88131291682493e-322, 1.93179667523927e-321, 9.18962101264719e-322, 1.29445199210407e-321, 5.03946958758071e-321, 3.90805925860426e-321, 6.12641400843146e-322, 2.15906687232625e-321, 1.17587623710217e-321, 4.42682818673757e-321, 1.04741916918344e-321, 7.11454530011395e-322, 2.61360726650019e-321, 2.58396332774972e-321, 9.38724727098368e-322), class = "integer64")
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/419363.html
標籤:
