当时间(所需的 x 轴)位于 CSV 的顶部而不是列中时,如何在 R 中创建散点图?

问题描述 投票:0回答:1

我正在尝试使用下面的 Excel 表来绘制不同位置、不同浓度(25uM 和 100uM(未显示))的细菌生长曲线。作为列名称的 Rep# 表示该特定时间的 OD 测量值 Rep1 = 第 1 小时,Rep4 = 第 4 小时。
我不知道如何将其设置为 R 理解我的时间变量不在其自己的列中的位置。

我正在尝试得到这个答案,否则我将不得不重新排列 Excel 工作表,并且由于数据量很大,我试图避免这种情况。
Data Sheet Set up

我对 R 语言相当陌生,通常可以通过谷歌搜索来解决我遇到的问题,但一直无法解决这个问题。我尝试使用 ts() 函数,但我似乎无法得到任何结果。

time-series rstudio
1个回答
0
投票

当数据采用长格式时,R 中的数据清理/预处理/可视化通常更容易完成(一列指示重复,另一列包含 OD 值,而不是对应于不同重复的 5 个 OD 列) .

tidyr 包中的ivot_longer 函数对此很有帮助。

library(tidyr)

df <- data.frame(
    "Plant" = sample(c("One", "Two", "Three"), size = 50, replace = TRUE),
    "Location" = sample(c("A", "B", "C"), size = 50, replace = TRUE),
    Rep1 = rnorm(50),
    Rep2 = rnorm(50),
    Rep3 = rnorm(50),
    Rep4 = rnorm(50),
    Rep5 = rnorm(50)
)

long_df <- pivot_longer(
    data = df,    
    cols = -c(Plant, Location), 
    names_to = c("Replicate"), 
    values_to = "OD"
)

cols
参数表示我们希望pivot_longer尝试延长数据框中所有非“Plant”或“Location”的列。您需要将该列表扩展到所有不以“Rep”开头的其他列。

该函数会将 Rep1、Rep2、Rep3... 列转换为名为“Replicate”的单个列(这就是 names_to 参数的用途)。 这些 Rep1、Rep2、... 列中的值将移动到名为 OD 的新列中。

从那里,我将使用 ggplot2 包来制作散点图。

library(ggplot2)

ggplot2(
    df,
    mapping = aes(x = Replicate, y = OD)
) + geom_point()

顺便说一句,我建议在此之前手动更改“Rep”列的名称(只有 1 和 2 的列),以避免与其他 Rep1、Rep2、... 列混淆。

© www.soinside.com 2019 - 2024. All rights reserved.