gpt4 book ai didi

r - 创建数据框

转载 作者:行者123 更新时间:2023-12-04 09:28:22 27 4
gpt4 key购买 nike

我的数据是这样设置的:

site    date      amb   ppm1   ppm2   ppm3   time0   time1   time2   time3
A 5/6/12 350 370 380 385 0 3 6 9

我需要它的格式有 2 列(一列是浓度,另一列是时间)

conc   time
350 0
370 3
380 6
385 9

这样我就可以对其进行回归。或者帮助了解如何对原始设置进行回归会很棒。

最佳答案

使用您的示例数据,并假设您的 data.frame 被称为“mydf”,您可以对每个“集合”列使用 stack 以获得您的输出显示:

setNames(data.frame(stack(mydf[, grep("^ppm|^amb", names(mydf))])[-2], 
stack(mydf[, grep("^time", names(mydf))])[-2]),
c("conc", "time"))
# conc time
# 1 350 0
# 2 370 3
# 3 380 6
# 4 385 9
  • grep 被使用,只是作为一个例子,如果你有许多类似命名的列并且不想通过计数来识别它们的列索引。如果这确实代表了您的数据,stack 也可以只是 stack(mydf[, 3:6])[-2]stack(mydf[ , 7:10]).
  • setNames 只是一个方便的函数,用于重命名输出中的列名称。
  • [-2] 只是从每个 stack 命令中删除第二列(这是从中获取值的列名称的列)。<

如果您不介意将“abm”的变量名更改为“ppm0”,另一种选择是使用reshape:

names(mydf)[3] <- "ppm0"
reshape(mydf, direction = "long", idvar = 1:2,
timevar = "measure", varying = 3:ncol(mydf), sep = "")
# site date measure ppm time
# A.5/6/12.0 A 5/6/12 0 350 0
# A.5/6/12.1 A 5/6/12 1 370 3
# A.5/6/12.2 A 5/6/12 2 380 6
# A.5/6/12.3 A 5/6/12 3 385 9

当然,您可以非常轻松地删除前三列。

关于r - 创建数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com