【问题标题】:shift one row down in a matrix/data frame in r在r中的矩阵/数据框中向下移动一行
【发布时间】:2016-03-08 20:48:36
【问题描述】:

我需要在我的数据框中移动行,而不是传输数据,而是将第一行移到第二行,将第二行移到第三行 .. 并删除最后一行。第一行包含所有 NA。我需要在 dplyr 内做。如果数据框是:

1 2 3 
4 5 6
7 8 9

我想要如下数据:

NA NA NA
1  2  3 
4  5  6

基本上我需要类似于pandas shift (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.shift.html) in r

提前致谢

【问题讨论】:

  • data.table 包有一个函数shift,它会用一个data.frame为你做这件事,比如setDF(shift(DF))[]
  • rbind(NA, d[-nrow(d), ]) 适用于一行。
  • 谢谢,dplyr 中有什么?
  • 这是一个使用dplyr的hack,但您可以尝试以下rbind(NA, df %>% filter(row_number()!=1))
  • dplyr 中惯用:your_data %>% mutate_each(funs = funs(lag))

标签: r dplyr


【解决方案1】:

评论回答,我能想到的最惯用的dplyr方法是lagmutate_allmtcars上的演示:

mtcars %>% mutate_all(.funs = funs(lag))

【讨论】:

  • mutate_each 已弃用。使用mtcars %>% mutate_all(funs(lag), n=1)
  • 继承错误(x,“fun_list”):参数“.funs”丢失,没有默认值?
  • @puzzler10 将 funs = 替换为 .funs =。现在可以使用了。
猜你喜欢
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 2021-07-15
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多