Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中减去列_R_Dataframe - Fatal编程技术网

在R中减去列

在R中减去列,r,dataframe,R,Dataframe,我有以下数据帧: Name,2014,2015,2016,2017,2018 Brad,100,200,342,532,65 Tom,54,2,523,121,200 Uma,200,221,225,229,250 我想做的是每年从上一列中减去: Name,2014,2015,2016,2017,2018 Brad,0,100,142,190,-467 我想自动完成,而不是像这样: (df$"2003" - df$"2002") 怎么可能呢?对不起,我是R的新手。谢谢您可能想要 # thi

我有以下数据帧:

Name,2014,2015,2016,2017,2018
Brad,100,200,342,532,65
Tom,54,2,523,121,200
Uma,200,221,225,229,250
我想做的是每年从上一列中减去:

Name,2014,2015,2016,2017,2018
Brad,0,100,142,190,-467
我想自动完成,而不是像这样:

(df$"2003" - df$"2002")

怎么可能呢?对不起,我是R的新手。谢谢

您可能想要

# this is your data
df <- data.frame("2014"=c(100,54,200),
             "2015"=c(200,2,221),
             "2016"=c(342,523,225),
             "2017"=c(532,121,229),
             "2018"=c(65,200,250),
             row.names=c("Brad","Tom","Uma"))

df     
#      X2014 X2015 X2016 X2017 X2018
# Brad   100   200   342   532    65
# Tom     54     2   523   121   200
# Uma    200   221   225   229   250
df[,-1]
给出data.frame中除第一列之外的每一列,
df[,-5]
给出除第五列之外的每一列。。。从这里开始,就是简单的减法

df <- structure(list(X2014 = c(100, 54, 200), X2015 = c(200, 2, 221
), X2016 = c(342, 523, 225), X2017 = c(532, 121, 229), X2018 = c(65, 
200, 250)), .Names = c("X2014", "X2015", "X2016", "X2017", "X2018"
), row.names = c("Brad", "Tom", "Uma"), class = "data.frame")
解决方案2 使用
dplyr

library(dplyr)
df <- data.frame(t(df)) %>% mutate_all(function(x) x - lag(x,default =x[1]))
df <- data.frame(t(df))
库(dplyr)
df%mutate_all(函数(x)x-lag(x,默认值=x[1]))
df
data.frame(t(apply(df, 1, diff)))
library(dplyr)
df <- data.frame(t(df)) %>% mutate_all(function(x) x - lag(x,default =x[1]))
df <- data.frame(t(df))