Я хотел бы сделать эту функцию и присвоить новому столбцу то же имя, что и столбец, прежде чем вычислять разницу между каждым периодом для каждого идентификатора. Поэтому я но colnames (df) [i], но это не работает? Затем я хочу запустить эту функцию для нескольких столбцов.
id <- rep(1:3,each=2)
period <- rep(1:2,3)
q1 <- c(3,2,4,1,8,5)
q2 <- c(4,1,2,1,9,6)
q3 <- c(6,4,6,1,4,2)
df <- data.frame(id, period,q1,q2,q3)
df
id period q1 q2 q3
------------------
1 1 3 4 6
1 2 2 1 4
2 1 4 2 6
2 2 1 1 1
3 1 8 9 4
3 2 5 6 2
test <- function(i){
d <- df %>%
group_by(id) %>%
summarise(colnames(df)[i] = abs(diff(i)))
return(d)
}
test(3)
num <-list()
quest <- c(4:6)
(for i in 1:length(quest)){
i <- quest[n]
num[[n]] <- test(i)
}
В конце она должна выглядеть следующим образом:
id q1 q2 q3
-----------
1 1 3 2
2 3 1 5
3 3 3 2