假设我有这样的数据:
distance <- c(134.2, 433.34, 332.12, 543.12, 333.12)
road.type <- c(1, 0, 1, 1, 0)
A <- c(2.3, 3.1, 4.4, 2.2, 1.4)
B <- c(0.33, 0.56, 0.45, 0.55, 0.98)
random.list <- data.frame(distance, road.type, A, B)
我希望在同一个图上,通过road.type对数据进行分类来绘制组合距离~A。因此,图中实际上应该包含两行,一行表示距离〜给出road.type = 1的数据,第二行表示距离〜给出road.type = 0的数据。
我想出的是:
random.list.sp1 <- random.list[random.list$road.type == "1"]
但是我得到的回报并不是包含只有road.type = 1的行的表,而是包含所有行但没有road.type列的表。
另外一般情况下,对于任何其他类型的绘图,是否有一种快速方法可以通过给定列修改数据?特别是,我可以在pair()或scatterplot()等中使用所提出的技术吗?
答案 0 :(得分:0)
这是一种方法。您的road.type需要不是数字(例如因子)才能将图表分成2个系列。
distance <- c(134.2, 433.34, 332.12, 543.12, 333.12)
road.type <- c(1, 0, 1, 1, 0)
A <- c(2.3, 3.1, 4.4, 2.2, 1.4)
B <- c(0.33, 0.56, 0.45, 0.55, 0.98)
random.list <- data.frame(distance, road.type, A, B)
random.list$road.type <- as.factor(random.list$road.type)
library(tidyverse)
data <- gather(random.list, distance, road.type)
names(data) <- c("distance", "road_type", "class", "value")
data <- data %>% filter(class == "A")
ggplot(data, aes(distance, value, color = road_type)) + geom_line()