我有以下向量h=c("a","b","c","d","e")

我想使用lag()函数创建看起来像这样的数据集:

pr <- data.frame(your_github         = h, 
                 review_this1        = lag(h),
                 review_this2        = lag(h,2))

但是,当我使用滞后时,会发生以下情况:col2 = c(NA,“ a”,“ b”,“ c”,“ d”)和col3 =(NA,NA,“ a”,“ b”,“ c ”)

但我需要得到类似于data.frame(col1=c("a","b","c","d","e"),col2=c("b","c","d","e","a"), col3=("c","d","e","a","b")) ,其中col2和col3中的值被循环(即第二列是只是第一个被1滞后的,但是第二个中的第一个是st列中的最后一个)。

#1楼 票数:3 已采纳

像这样吗

library(dplyr) 

h = c("a","b","c","d","e")
pr <- data.frame(your_github = h,
                 review_this1 = ifelse(is.na(lead(h)), h[1], lead(h)),
                 review_this2 = ifelse(is.na(lead(h, 2)), h[2:1], lead(h, 2)))
pr

#  your_github review_this1 review_this2
#1           a            b            c
#2           b            c            d
#3           c            d            e
#4           d            e            a
#5           e            a            b

#2楼 票数:2

使用base R,您可以用headtail实现此head (在tio上进行测试):

h<-letters[1:5]
pr <- data.frame(your_github         = h, 
                 review_this1        = c(tail(h, -1), head(h, -1)),
                 review_this2        = c(tail(h, -2), head(h, -2)))
print(pr)

输出:

  your_github review_this1 review_this2
1           a            b            c
2           b            c            d
3           c            d            e
4           d            e            a
5           e            a            b

想法是使向量h的开头具有尾部,并将其与head所取向量的末尾相减,减去从尾部得到的值,因此数据帧的每一列(向量)的末尾具有相同的长度。

如果要循环使用最后一个值成为第一个值的向量,只需反转尾巴和头部的符号即可。

  ask by user3617715 translate from so

未解决问题?本站智能推荐:

4回复

如何在R中滞后数据框的多个特定列

我想在 R 中滞后数据框的多个特定列。 让我们以这个通用示例为例。 假设我已经定义了我需要滞后的数据帧的哪些列: 我的初始数据框: 我想计算以下数据框: 我会知道如何仅对一个滞后列执行此操作,如此处所示,但无法找到一种以优雅的方式对多个滞后列执行此操作的方法。 很感谢任何形式的帮助。
3回复

R. n另一列的数据框中的前一个元素

我想添加一个新列,其中包含来自另一列的前n个元素的向量(或列表)。 分组后进行计算。 这是n = 2的示例。 输入: 输出:新列应为整数(或列表)的向量,并包含以下值: 一个简单的解决方案是 但是,这只是一个简化的表。 对于我的计算,n为36。这意味着我需要为lag(v1,1),lag
2回复

根据前几天的数据创建新的数据框列(滞后变量)

我正在研究温度数据集,我希望突出显示连续最高温度超过30℃的日子,并在突出显示热浪的数据框中创建新的TRUE / FALSE列。 为此,我需要查看前三天的数据,并验证它们是否都满足此条件以及当前日期本身。 我尝试使用lag命令生成-1天,-2天和-3天的多个新列,然后使用ifelse语句
4回复

数据框滞后

我有一个数据框 我希望最终数据框具有三个额外的列,例如 哪里 滞后1滞后1个月 滞后_2滞后2个月 Lag_3滞后3个月。 我已使用以下代码至少获取Lag_1 但这并没有给我Lag_1所需的输出。 我也尝试过在R dataframe
2回复

按列分组的数据框上R中的行之间的差异

我正在寻找由app_name按版本进行计数的差异。 我的数据集如下所示:app_name,version_id,count,[difference] 这是数据集 给定此data.frame,我如何才能获得app_name和version_id计数的滞后差异? 每个应用程序的初始
1回复

在R =中的column =“变量滞后”的特殊情况下,将数据帧中的列堆叠在一起。

(给出的可复制示例)在column =“ =”变量滞后“的特殊情况下,如何将数据框中的列堆叠在一起? 产生 其中X1,...,X4是变量,X35l表示X3的第5个滞后。 我想将变量的滞后叠加在一起: SOF中有一个类似的问题( 在R中收集多组列 ),但是我不知道如何从那
1回复

从 R 中的某个列开始将后续列向上移动一个额外的位置(滞后)

我有这个数据 我正在尝试做一些与此非常相似的事情...... 矩阵中每一列的单独移位 使用此代码... 我让它开始移动正确的列(年龄 1),但它移动得太远了。 它应该只上移一位,然后 Age2 应该上移 2 位。 看起来这段代码是从正确的年龄开始的,但是根据目标列远离第一列的列数来确定偏移
2回复

R-添加列检查列的最后n行中是否发生了某些事情

我想创建一个新列,如果在另一列的最后n行中找到某个值,则在每一行返回TRUE,否则返回FALSE。 这是一个示例数据框(假设这是来自更大数据框的示例): 这就是我想要的(条件值= 1且n = 10) 我可以在dplyr的ifelse语句中使用许多“或”条件来执行此操作: