我有一个数据框,格式为:
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中。我想知道我该怎么做?
答案 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)