2016-10-05 2 views
1
structure(list(Time = structure(c(1080827100, 1080827400, 1080827700, 
1080828000, 1080828300, 1080828600, 1080828900, 1080829200, 1080829500, 
1080829800), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
    precip = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02)), .Names = c("Time", 
"precip"), row.names = 236614:236623, class = "data.frame") 

Хочу добавить засветки с последовательностью чисел, которые являются нечетными числами, кратными 2,5Что можно сделать, чтобы умножить столбец с серийными номерами?

p1*2.5 + p2*7.5+ p3*12.5 +... 

где p1, p2, p3 являются рядами засветки.

Как я могу сгенерировать эту последовательность чисел (2.5, 7.5, 12.5, 17.5 и т. Д.) На основе длины блока данных и добавить ее в качестве дополнительного столбца в один и тот же файл данных?

Я пробовал: df$new <-seq(0,nrow(df),2.5)

Это неправильно конечно. Мне нужно указать число значений, которые я хочу вместо последнего значения, используя nrow (df).

+0

'seq' имеет' length.out' аргумент и 'по 'аргумент, который должен соответствовать счету. Вы рассказываете, с чего начать, сколько значений нужно генерировать и сколько нужно делать каждый раз. – Jota

+0

Если вы хотите добавить столбец, то он должен иметь такую ​​же длину, что и другие, поэтому что-то не так с помощью 'nrow (ДФ) '? –

+0

В принципе, они должны быть нечетными кратными 2,5. Это вариация этого, когда время составляет 5 минут каждый. Этот пример имеет неравные периоды времени: https://math.dartmouth.edu/~klbooksite/4.11/411examples/411flow.htm – maximusdooku

ответ

0

Вот один из способов:

remove <- seq(0,100, 2.5) 
nums <- remove[c(F, T)] 
nums <- nums[1:nrow(df1)] 

df1$new <- nums 

Примечание, если вы знаете количество элементов, которые вы хотите, то вы можете заменить 100 с этим (или 2x, что, на самом деле) и пропустить 3-ю строчку. В противном случае 100 - произвольное большое количество.

Так вариация будет

remove <- seq(0,50, 2.5) 
nums <- remove[c(F, T)] 

df1$new <- nums 

или, как было упомянуто Jota, вы могли бы сделать

seq(2.5, length.out = nrow(df), by = 5) 
+0

Спасибо. Решения Jota также работают. – maximusdooku

+0

@maximusdooku Добро пожаловать. Да, я включил его как часть моего ответа. Не забудьте отметить решение, принятое. Если Джота хочет переместить свой комментарий на ответ, и вы хотите принять тот, который, конечно, конечно. –

Смежные вопросы