我想將一個數據幀分成幾個較小的數據幀。這看起來像一個非常微不足道的問題,但我無法從網絡搜索中找到解決方案。如何拆分數據框?
如何拆分數據框?
回答
如果你想根據某些變量的值拆分數據框,我建議使用plyr
包中的daply()
。
library(plyr)
x <- daply(df, .(splitting_variable), function(x)return(x))
現在,x
是一個數據幀的數組。要訪問其中一個數據框,可以使用分割變量的級別名稱對其進行索引。
x$Level1
#or
x[["Level1"]]
我確信在將數據分解爲多個數據幀之前,沒有其他更聰明的方式來處理數據。
子集()也很有
subset(DATAFRAME, COLUMNNAME == "")
對於調查包,也許是 「調查」 包有關?
您可能還需要將數據幀切成小dataframes任意數量。在這裏,我們切入兩個數據框。
x = data.frame(num = 1:26, let = letters, LET = LETTERS)
set.seed(10)
split(x, sample(rep(1:2, 13)))
給
$`1`
num let LET
3 3 c C
6 6 f F
10 10 j J
12 12 l L
14 14 n N
15 15 o O
17 17 q Q
18 18 r R
20 20 t T
21 21 u U
22 22 v V
23 23 w W
26 26 z Z
$`2`
num let LET
1 1 a A
2 2 b B
4 4 d D
5 5 e E
7 7 g G
8 8 h H
9 9 i I
11 11 k K
13 13 m M
16 16 p P
19 19 s S
24 24 x X
25 25 y Y
你想要的答案在很大程度上取決於你想如何和爲什麼要分手的數據幀。
例如,如果您想省略一些變量,則可以從數據庫的特定列創建新的數據幀。數據框後括號中的下標是指行號和列號。檢查Spoetry的完整描述。
newdf <- mydf[,1:3]
或者,您可以選擇特定的行。
newdf <- mydf[1:3,]
而且這些下標也可以是邏輯測試,例如選擇包含特定值的行或具有期望值的因子。
你想用剩下的塊做什麼?你需要對每個數據庫塊執行相同的操作嗎?然後,您需要確保數據框的子集以方便的對象(如列表)結束,這將有助於您在每個數據框的塊上執行相同的命令。
我剛剛發佈了一個樣的RFC的,可以幫助你:Split a vector into chunks in R
x = data.frame(num = 1:26, let = letters, LET = LETTERS)
## number of chunks
n <- 2
dfchunk <- split(x, factor(sort(rank(row.names(x))%%n)))
dfchunk
$`0`
num let LET
1 1 a A
2 2 b B
3 3 c C
4 4 d D
5 5 e E
6 6 f F
7 7 g G
8 8 h H
9 9 i I
10 10 j J
11 11 k K
12 12 l L
13 13 m M
$`1`
num let LET
14 14 n N
15 15 o O
16 16 p P
17 17 q Q
18 18 r R
19 19 s S
20 20 t T
21 21 u U
22 22 v V
23 23 w W
24 24 x X
25 25 y Y
26 26 z Z
乾杯, 塞巴斯蒂安
你也可以使用
data2 <- data[data$sum_points == 2500, ]
這將使一個數據幀sum_points = 2500的值其中sum_points = 2500
它給出:
airfoils sum_points field_points init_t contour_t field_t
...
491 5 2500 5625 0.000086 0.004272 6.321774
498 5 2500 5625 0.000087 0.004507 6.325083
504 5 2500 5625 0.000088 0.004370 6.336034
603 5 250 10000 0.000072 0.000525 1.111278
577 5 250 10000 0.000104 0.000559 1.111431
587 5 250 10000 0.000072 0.000528 1.111524
606 5 250 10000 0.000079 0.000538 1.111685
....
> data2 <- data[data$sum_points == 2500, ]
> data2
airfoils sum_points field_points init_t contour_t field_t
108 5 2500 625 0.000082 0.004329 0.733109
106 5 2500 625 0.000102 0.004564 0.733243
117 5 2500 625 0.000087 0.004321 0.733274
112 5 2500 625 0.000081 0.004428 0.733587
嗨,如果您想根據該列中的唯一值將其動態分割爲不同的data_frame,那麼您會如何處理。 – 2017-04-06 02:54:36
如果您想要按其中一列的值拆分,可以使用lapply
。例如,分裂ChickWeight
到一個單獨的數據集爲每個小雞:
data(ChickWeight)
lapply(unique(ChickWeight$Chick), function(x) ChickWeight[ChickWeight$Chick == x,])
拆分所述數據幀似乎適得其反。相反,使用分裂申請-結合範例,例如,生成一些數據
df = data.frame(grp=sample(letters, 100, TRUE), x=rnorm(100))
然後分裂僅相關列並應用scale()
函數爲x的每個組中,和(使用split<-
或ave
)合併結果
df$z = 0
split(df$z, df$grp) = lapply(split(df$x, df$grp), scale)
## alternative: df$z = ave(df$x, df$grp, FUN=scale)
與拆分data.frames相比,這將非常快速,並且結果仍然可用於下游分析而無需迭代。我認爲dplyr語法
library(dplyr)
df %>% group_by(grp) %>% mutate(z=scale(x))
一般來說,這dplyr解決方案比拆分數據幀速度快,但速度不如拆分申請-結合。
- 1. 如何拆分數據與[/ - ]
- 2. 拆分和非拆分數據框分爲四部分
- 3. 我如何拆分和分配數據?
- 4. 如何根據Python中的交叉點拆分數據框?
- 5. 拆分數據
- 6. 拆分數據
- 7. 拆分數據
- 8. 拆分數據
- 9. 如何在R中將數據幀拆分/分組爲多個數據框
- 10. 如何拆分數組中的數據
- 11. 如何基於手動編號拆分數據框?
- 12. 如何將多個列拆分/聚合大型數據框(ffdf)?
- 13. Python:如何拆分數據框中的字符串列?
- 14. 如何使用RxJS從arrayBuffer拆分數據框?
- 15. 如何通過空格拆分這個數據框?
- 16. 如何按我想要的順序拆分數據框?
- 17. 如何在多個excel文件中拆分熊貓數據框
- 18. 如何拆分和對比數據框在熊貓
- 19. 如何在TSQL拆分數據
- 20. 如何根據條件拆分數組?
- 21. 我應該如何拆分數據庫?
- 22. 如何將數據拆分爲字典?
- 23. 如何拆分iOS的sqlite數據庫?
- 24. 如何將數據拆分爲datagridview
- 25. 如何拆分數據庫項目?
- 26. 如何行數據拆分成多列
- 27. 拆分數據表
- 28. 拆分數據幀
- 29. 拆分和分析數據
- 30. 將數據幀拆分爲數據框列表,但如何重新合併?
從未理解'split()',但是使用['dtile'中的''ntile'](http://stackoverflow.com/a/27646599/1888983),然後按組索引(「quartile」)過濾我想要的是:'group = df [df $ quartile == i,]'。 – jozxyqk 2015-02-17 08:14:12