如何将此表的最后两行减去2?

时间:2017-11-05 13:05:02

标签: r sorting plot subtraction

     Loc Var  Y1    Y2
1.   UF   M  81.0  80.7
2.   UF   S 105.4  82.3
3.   UF   V 119.7  80.4

我需要一种快速的方法,而无需从头开始重建表格。

提前致谢!

R程序

它有大约30行,我只是因为时间的推移而省略了它们。

我希望减去所有行的最后两列(Y1,Y2)(1,2,3,... 30)

2 个答案:

答案 0 :(得分:0)

不确定您想要什么,但如果您只想从第2行和第3行的Y1Y2列中减去两个,那么您可以使用:

df[2:3, c("Y1", "Y2")] <- df[2:3, c("Y1", "Y2")] - 2

更一般地说:

nr <- nrow(df)
nc <- ncol(df)
df[(nr-1):nr, (nc-1):nc] <- df[(nr-1):nr, (nc-1):nc] - 2

数据:

df <- data.frame(Loc = c("UF", "UF", "UF"),   # I'm calling your data frame 'df'
                 Var = c("M", "S", "V"),
                 Y1 = c(81.0, 105.4, 119.7),
                 Y2 = c(80.7, 82.3, 80.4))

Demo

答案 1 :(得分:0)

鉴于Tim的数据:

df <- data.frame(Loc = c("UF", "UF", "UF"),   # I'm calling your data frame 'df'
             Var = c("M", "S", "V"),
             Y1 = c(81.0, 105.4, 119.7),
             Y2 = c(80.7, 82.3, 80.4))

您可以使用dplyr函数获得所需的结果:

library(dplyr) # Load the library

df2<- df %>%
       mutate(Y1=Y1-2, Y2=Y2-2)

你会得到这个:

df2
Loc Var    Y1   Y2
1  UF   M  79.0 78.7
2  UF   S 103.4 80.3
3  UF   V 117.7 78.4

对于Y1和Y2的任意数量的行,这都可以正常工作