2017-09-15 80 views
0

我試圖找到的第一個和最後一個值在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 

我很困惑,要使用哪個函數來得到的結果在河

回答

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 
2

我們可以使用aggregate從基R,

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 

DATA

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