操作数据框列

时间:2018-07-27 14:51:11

标签: r

我有一个数据框,格式为:

Col A   ColB   ColC  
"Text1" 30     50
"Text2" 100    120
"Text3" 500    560
"Text4" 705    800

依此类推...

我想实现一个看起来像这样的数据框:

Col A   ColB   ColC  ColD
"Text1" 30     50    99
"Text2" 100    120   499
"Text3" 500    560   704
"Text4" 705    800   ...(Text5's position -1)

我基本上想将以下文本“ ColB-1”插入到上一文本的ColD中。我想知道我该怎么做?

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

library(data.table)
setDT(df)
df[, ColD := shift(ColB, n = 1, type = 'lead', fill = 0)-1]

    ColA ColB ColC ColD
1: Text1   30   50   99
2: Text2  100  120  499
3: Text3  500  560  704
4: Text4  705  800   -1

答案 1 :(得分:1)

这是一种简单的方法(以虹膜为例)

library(dplyr)

iris$newcol <- lead(iris$Petal.Width - 1, n=1)
head(iris)

答案 2 :(得分:0)

您可以使用变量的向量,例如对于最后一个变量,请使用0:

df[,4]=c(df[2:nrow(df),2]-1,0)