2015-04-07 2 views
1

У меня есть кадр данных, состоящий из уникальных записей вдоль строк, описательных характеристик для каждой записи в первых 8 столбцах, а затем недельных недель в столбцах. Я хотел бы создать новый dataframe, который показывает ту же структуру с недельными различиями в ценах в неосвещенных столбцах.Функция вычитания столбцов Dataframe

Так, например, 9-я колонка теперь показывает (цена недели 2 - цена за неделю 1) вместо текущей цены недели 1. У меня возникли проблемы с выяснением того, как итеративно и интересно, нужно ли даже повторять итерацию. Я пытаюсь применить seq_len, но я не очень хорошо знаком с этой функцией.

Благодарим за помощь.

EDIT: Ниже приведен пример данных. Выход, на который я надеюсь, является второй структурой.

structure(list(s = structure(1:3, .Label = c("aa", "bb", "cc" 
), class = "factor"), w1 = c(3, 4, 5), w2 = c(55, 2, 1), w3 = c(52, 
9, 3)), .Names = c("s", "w1", "w2", "w3"), row.names = c(NA, 
-3L), class = "data.frame") 

structure(list(s = structure(1:3, .Label = c("aa", "bb", "cc" 
), class = "factor"), w1d = c(NA, NA, NA), w2d = c(52, -2, -4 
), w3d = c(-3, 7, 2)), .Names = c("s", "w1d", "w2d", "w3d"), row.names = c(NA, 
-3L), class = "data.frame") 
+0

Http: // stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – rmuc8

+0

Добавлен пример, спасибо. –

+0

Попробуйте 'df2 <- transform (df1, w3d = w3-w2)' – Khashaa

ответ

1

Извлечение числовых столбцов [2:4] из вашего кадра данных, и применение diff рядов дают

d <- t(apply(df1[2:4], 1, diff)) 
    w2 w3 
[1,] 52 -3 
[2,] -2 7 
[3,] -4 2 

Объедините его с нечисловых столбцами данных

df2 <- cbind(df1[1], d) 
+0

Спасибо! Это отлично работает. –