Как использовать среднее значение столбца и другого столбца для построения линейного графика? - PullRequest
0 голосов
/ 03 мая 2019

У меня довольно большой фрейм данных, и я пытаюсь построить линейный график.

Ferret ID   Vaccine Day Temperature Weight
558 None    -2  100.6   1420
558 None    -1  101.5   1420
558 None    20  102 1450
547 Vaccine 31  101.5   1080
547 Vaccine 32  100.8   1100
548 Vaccine -2  100.7   1290
548 Vaccine -1  101.2   1300
548 Vaccine 0   101.6   1320
548 Vaccine 1   101.5   1031
548 Vaccine 2   101.9   1310
548 Vaccine 3   101.6   1300
548 Vaccine 7   101.7   1300
548 Vaccine 14  102.2   1280
....

Я хочу, чтобы независимая переменная была днем, а Зависимая переменная была средней температурой, которой является вакцина ".Нет "

Я пробовал" Саппи ", но не работал> ..... Это на самом деле моя домашняя работа, и это последняя неделя, которую я действительно ценю, если кто-то может помочь ...

1 Ответ

1 голос
/ 03 мая 2019

Вот три решения.В будущем это поможет показать, что вы пробовали, чтобы мы могли адаптировать ответ к вашим методам и / или предпочтениям.

Во-первых, ваши данные не отформатированы должным образом: использование пробелов в именах столбцов не рекомендуется вR, поэтому в этом примере я вместо этого буду использовать

x <- read.table(header=TRUE, stringsAsFactors=FALSE, text="
ID  Vaccine Day Temperature Weight
558 None    -2  100.6       1420
558 None    -1  101.5       1420
558 None    20  102         1450
547 Vaccine 31  101.5       1080
547 Vaccine 32  100.8       1100
548 Vaccine -2  100.7       1290
548 Vaccine -1  101.2       1300
548 Vaccine 0   101.6       1320
548 Vaccine 1   101.5       1031
548 Vaccine 2   101.9       1310
548 Vaccine 3   101.6       1300
548 Vaccine 7   101.7       1300
548 Vaccine 14  102.2       1280")

Во-вторых, я буду считать, что все ваши значения Day являются целыми;в противном случае возникнут проблемы с группировкой, поскольку не будет очевидно (учитывая то, что мы знаем), что что-либо, кроме целочисленных дней, будет иметь смысл.

Хорошо, вот поспешный способ Base-R сделать вещи:

x1 <- x[ x$Vaccine == "None", ]
x2 <- do.call(
  rbind.data.frame,
  by(x1, x1$Day, function(a) data.frame(Day = a$Day[1], AvgTemp = mean(a$Temperature, na.rm=TRUE)))
)
x2
#    Day AvgTemp
# -2  -2   100.6
# -1  -1   101.5
# 20  20   102.0
plot(AvgTemp ~ Day, data = x2, type = "b", pch = 16)

simple line graph

Кроме того, если вам удобнее использовать решения на основе dplyr или data.table:

library(dplyr)
x %>%
  filter(Vaccine == "None") %>%
  group_by(Day) %>%
  summarize(AvgTemp = mean(Temperature, na.rm = TRUE)) %>%
  plot(AvgTemp ~ Day, data = ., type = "b", pch = 16)

library(data.table)
DT <- as.data.table(x)
DT1 <- DT[ Vaccine == "None", .(AvgTemp = mean(Temperature, na.rm = TRUE)), by = "Day" ]
plot(AvgTemp ~ Day, data = DT1, type = "b", pch = 16)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...