我想將自己的資料添加到資料框中,并最終使用該資料生成散點圖。
但我無法在 R 中添加 2D 點。在我看來,x 軸和 y 軸的資料必須單獨添加。但是,我有多個點具有相同的 x 坐標但不同的 y 坐標。
我想出了一種輸入資料的方法,如下所示。但肯定有更有效的方法嗎?
i1 <- seq (85,85, length.out=5)
c1 <- c(55, 62, 61, 73, 76)
i2 <- seq (105,105, length.out=6)
c2 <- c(64, 72, 73, 82, 87, 88)

uj5u.com熱心網友回復:
最正常的就是通過col引入資料:
# several ways to create obs
df = data.frame(X = c(85,105,122,143,162,182,203,224,242,262),
Y_1 = 1:10,
Y_2 = rep(5,10),
Y_3 = c(NA,88,NA,113,125,140,NA,160,189,182))
X Y_1 Y_2 Y_3
1 85 1 5 NA
2 105 2 5 88
3 122 3 5 NA
4 143 4 5 113
5 162 5 5 125
6 182 6 5 140
7 203 7 5 NA
8 224 8 5 160
9 242 9 5 189
10 262 10 5 182
然后我們可以將其轉換為更長的形狀:
library(tidyr)
df_longer = df %>% pivot_longer(!X)
# A tibble: 30 × 3
X name value
<dbl> <chr> <dbl>
1 85 Y_1 1
2 85 Y_2 5
3 85 Y_3 NA
4 105 Y_1 2
5 105 Y_2 5
6 105 Y_3 88
7 122 Y_1 3
8 122 Y_2 5
9 122 Y_3 NA
10 143 Y_1 4
# … with 20 more rows
使用基礎圖的散點圖:
plot(df_longer$X, df_longer$value)
使用 ggplot:
library(ggplot2)
ggplot(df_longer)
geom_point(aes(x = X, y = value, col = name))

uj5u.com熱心網友回復:
將資料放入長格式以進行繪圖是最容易的。在這里,我將所有資料轉換為數字,然后轉為長格式,我們可以洗掉包含的行NA(即空白的行)。我也不保存列名,但如果對點進行顏色編碼很重要,可以保留它們。
library(tidyverse)
df %>%
mutate(across(everything(), ~ as.numeric(.))) %>%
pivot_longer(-x, names_to = NULL, values_to = "y", values_drop_na = TRUE) %>%
ggplot(aes(x = x, y = y))
geom_point()
輸出

資料
df <- structure(list(x = c(85, 105, 122), y1 = c(55, 64, 79), y2 = c(62,
72, 84), y3 = c("", "88", "")), class = "data.frame", row.names = c(NA,
-3L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/450201.html
標籤:r
上一篇:如何計算列內的累積值
下一篇:如何從R中的字串中獲取前n個字符
