【问题标题】:How to split Data Frame into Rows of Fixed size and separate them with dplyr如何将数据框拆分为固定大小的行并用 dplyr 分隔它们
【发布时间】:2015-07-29 08:38:53
【问题描述】:

我对 data.frame 进行了排序,其中一列每 21 行重复一次。那就是df中的V

df是这样的;

set.seed(1)
No <- rep(seq(0,95,1),times=21)
AC <- rep(rep(c(78,110),each=1),times=length(No)/2)
AR <- rep(rep(c(256,320,384),each=2),times=length(No)/6)
AM <- rep(1,times=length(No))
DQ <- rep(rep(seq(0,15,1),each=6),times=3)
V <- rep(seq(100,2100,100),each=96)
R <- sort(replicate(3, sample(5000:6000,96)))

df <- data.frame (No,AC,AR,AM,DQ,V,R)

整理我使用dplyr包的数据

library(dplyr)
df_1 <- df %>% group_by(AR,AC) %>% arrange(No)

要根据V 列更改拆分数据,我使用基函数;

split <- split(df_1,rep(1:96,each=21))

问题是我可以用dplyrtidyr 做到这一点吗?而分裂后 如何区分奇数和偶数数据?

【问题讨论】:

  • 之后您想对拆分后的数据做什么?这可能有助于回答您的问题。如果你想do 与你的data.frame “拆分”(又名。分组)V 你可以做df %&gt;% group_by(V) %&gt;% summarise_each(funs(mean))
  • 你能指定odd数据吗?您的data.frame 中有严重的列,您要根据哪个拆分?或者你的意思是奇数行数 1,3,...?
  • @thothal 拆分数据后成为列表。我想在这个列表中有奇数和偶数的数据作为不同的data.frames
  • @thothal odd 数据表示list 内的奇数。 split[3] 等等..
  • 像这样even &lt;- as.data.frame(do.call(rbind, split[2 * (1:48)]))?因为如果是这种情况,您根本不需要通过 splitarrange...

标签: r dataframe dplyr tidyr


【解决方案1】:

根据讨论,您可以立即使用filter,而无需先使用arrange

even <- df %>% filter(No %% 2 == 0)
odd  <- df %>% filter(No %% 2 == 1)

【讨论】:

  • 感谢您的回答。另一方面,我无法捕捉到%% 2==0 and %%2==1
  • %% 是模运算符。任何偶数都可以除以 2,因此模数等于 0。查看:0:10 %% 2。所有偶数(包括0)将产生0
猜你喜欢
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多