我试图找到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中使用哪个函数来获得结果。
答案 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