假設你的數據幀dat
和你的最大價值是在矢量maxima
,您可以使用
split(dat, cut(dat$Pos, breaks = maxima, include.lowest = TRUE))
對於示例數據幀:
dat <-
structure(list(Pos = 0:14, Value = c(66.81967, 66.36885, 65.79508,
65.27049, 64.88525, 64.97541, 65.39344, 65.99181, 66.63115, 66.95901,
66.89344, 66.44262, 65.90984, 65.49181, 65.35246)), .Names = c("Pos",
"Value"), class = "data.frame", row.names = c(NA, -15L))
,並在你的範圍內最大的前幾個值:
maxima <- c(0, 10, 19)
我的代碼給你數據的列表框
#$`[0,10]`
# Pos Value
#1 0 66.81967
#2 1 66.36885
#3 2 65.79508
#4 3 65.27049
#5 4 64.88525
#6 5 64.97541
#7 6 65.39344
#8 7 65.99181
#9 8 66.63115
#10 9 66.95901
#11 10 66.89344
#
#$`(10,19]`
# Pos Value
#12 11 66.44262
#13 12 65.90984
#14 13 65.49181
#15 14 65.35246
如果你不想數據幀,但只是Value
,使用
split(dat$Value, cut(dat$Pos, breaks = maxima, include.lowest = TRUE))
#$`[0,10]`
# [1] 66.81967 66.36885 65.79508 65.27049 64.88525 64.97541 65.39344 65.99181
# [9] 66.63115 66.95901 66.89344
#
#$`(10,19]`
# [1] 66.44262 65.90984 65.49181 65.35246
謝謝!我會如何將這些保存爲單獨的數據框/集合(不能確定正確的術語),以便我可以單獨適合它們?
如何
lst <- split(dat, cut(dat$Pos, breaks = maxima, include.lowest = TRUE))
dir <- getwd()
lapply(seq_len(length(lst)),
function (i) write.csv(lst[[i]], file = paste0(dir,"/",names(lst[i]), ".csv"), row.names = FALSE))
這將每個數據幀保存到一個文件.csv
目錄下dir
。我用getwd()
來測試代碼;您可以將其更改爲特定的文件夾。
爲什麼'10-15'?不是'10-19'嗎? – user2100721
我說10-15,因爲我只提供了15個數據(或者說,我認爲我有,現在我注意到我只提供了14)。 – GeorgeSBF