Над списком фрейма данных, содержащего два столбца Год и Значение. Я отсортировал значения в порядке возрастания по годам. Теперь я хотел бы вернуть положение каждого значения в его годовом ряду, чтобы построить их и сравнить эти ранжированные годовые ряды среди фреймов данных.
Вот пример набора данных
#data
df1 <- data.frame(Year = c(1860, 1860, 1860, 1861, 1861, 1862, 1862, 1862), Value = c(487, 456, 123, 159, 123, 789, 456, 321))
df2 <- data.frame(Year = c(1916, 1916, 1917, 1917, 1917, 1918, 1918, 1918, 1919, 1919), Value = c(123, 456, 487, 123, 159, 321, 789, 456, 487, 154))
l <- list(df1, df2)
Шаг 1: я упорядочил значения по годам, используя простую order()
в lapply
функцию
sort.df <- lapply(l, function(x) {
x[order(x$"Year", x$"Value"), ]
})
Шаг 2: Я думал cbind()
последовательность числовых значений по году, используя цикл с
for (row in 1:nrow(df)) {
require (dplyr)
require (purr)
df %>% group_by(df$"Year") %>%
seq(1, (as.numeric(nrow(df[which(df$Year == i), ]))), 1)
}
Я просто не в состоянии интегрировать это в lapply()
функцию ... Но она работает в течение определенного года данного df.
Есть ли способ сделать это?
#result
df1.1 <- data.frame(Year = c(1860, 1860, 1860, 1861, 1861, 1862, 1862, 1862), Value = c(123, 456, 487, 123, 159, 321, 456, 789), Rank = c(1,2,3,1,2,1,2,3))
df2.1 <- data.frame(Year = c(1916, 1916, 1917, 1917, 1917, 1918, 1918, 1918, 1919, 1919), Value = c(123, 456, 123, 159, 487, 321, 456, 789, 154, 487), Rank = c(1,2,1,2,3,1,2,3,1,2))
l.1 <- list(df1.1, df2.1)