ggplot2 строит чередующиеся строки из 2 столбцов - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть датафрейм с 3 столбцами "ID", "on.tank", "on.mains".данные выглядят так:

ID: 1,2,3,4,5,6,7,8,9,10 (последовательно) on.tank: 25,0,10,0,43,0, 5 on.mains: 0,12,0,11,0,2,0, поэтому столбцы 2 и 3 чередуются между нулем и значением, где, когда один равен нулю, другой имеет значение поочередно.

Я хочу создать один столбец, который чередует каждое значение поочередно, и второй столбец, который будет чередоваться с множителями on.main, on.tank, on.main и т. Д., Поскольку он представляет дни в резервуаре, затем дни в сети, затем дни в резервуареи т. д. и т. д. поочередно.

Я пытался использовать melt, но он не дает чередовать, он складывает данные, поэтому я получаю on.tank, on.tank, on.tank и т. д. для 2000 строк, а затем включаю.сеть, on.mains и т. д.

> dput(head(data))
structure(list(ID = 1:6, on.tank = c(0, 56, 0, 1, 0, 97), on.main = c(-1, 
0, -9, 0, -18, 0)), .Names = c("ID", "on.tank", "on.main"), row.names = c(NA, 
6L), class = "data.frame")

1 Ответ

0 голосов
/ 18 декабря 2018

Вот ваши данные:

df <- data.frame(ID=1:7,
             on.tank=c( 25,0,10,0,43,0,5),
             on.mains=c(0,12,0,11,0,2,0))

Использование базы R:

df$On.which <- ifelse(df$on.tank > df$on.mains, "on.tank", "on.mains")

Это будет работать, если любое из ваших значений не является отрицательным.Если у вас отрицательные значения, используйте:

df$On.which <- ifelse(df$on.mains==0, "on.tank", "on.mains")

Делает ли это то, что вам нужно?Если вы удалите кавычки, вы также можете использовать этот метод, чтобы получить значения столбцов, объединенных в 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...