查找不同列中值集的值的差异

时间:2017-09-15 07:00:57

标签: r

我试图找到R中给定列中一组值的第一个和最后一个值的差异。示例数据表是

V1 V2
A  2
B  4
A  3
C  1
D  2
B  4
A  5

输出应该是第一次和最后一次出现并给出结果

V1 V2
A  3
B  0
C  1
D  2 

我很困惑在r中使用哪个函数来获得结果。

2 个答案:

答案 0 :(得分:2)

我们可以使用基础R的aggregate

aggregate(V2 ~ V1, df, FUN = function(i) ifelse(length(i) > 1, tail(i, 1) - head(i, 1), i))

给出,

  V1 V2
1  A  3
2  B  0
3  C  1
4  D  2

数据

dput(df)
structure(list(V1 = structure(c(1L, 2L, 1L, 3L, 4L, 2L, 1L), .Label = c("A", 
"B", "C", "D"), class = "factor"), V2 = c(2L, 4L, 3L, 1L, 2L, 
4L, 5L)), .Names = c("V1", "V2"), class = "data.frame", row.names = c(NA, 
-7L))

答案 1 :(得分:1)

我们可以使用dplyr

library(dplyr)
df1 %>% 
  group_by(V1) %>%
  summarise(V2 = if(n()>1) last(V2)- first(V2) else V2)
# A tibble: 4 x 2
#     V1    V2
#   <chr> <int>
#1     A     3
#2     B     0
#3     C     1
#4     D     2