在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))