gpt4 book ai didi

r - 将分组的连续变量转换为 R 中的行

转载 作者:行者123 更新时间:2023-12-04 18:45:48 24 4
gpt4 key购买 nike

我有一个包含这些值虚拟值的数据框,我想对它们进行 lm 回归。其中一个变量是分组连续变量,如下所示

df <- data.frame("y" = c(10, 11, 12, 13, 14),
"x" = as.factor(c("100-102", "103-105", "106-108", "109-111", "112-114")))

我想回归 y~x,一种方法是用它们的平均数值替换 x 因子。这可以使用正则表达式轻松完成。

另一种方法是创建附加行并扩展数据集,使其看起来像这样
data.frame("y" = c(10, 10, 10, 11, 11, 11......),
"x" = c(100, 101, 102, 103, 104, 105......))

有没有一个功能可以做到这一点?

我正在考虑首先创建额外的变量,如 x1、x2、x3,然后使用 reshape2 包将 x 列转换为行。

最佳答案

一个 data.table解决方案。这在大型 data.frame 上应该非常快也是。

require(data.table)
dt <- data.table(df, key="y")
dt[, list(x=seq(sub("-.*$", "", x), sub(".*-", "", x))),by=y]

如果您有更多列并且您不希望在按列拆分时使用每个组合 x ,那么这是要使用的代码:
require(data.table)
dt <- data.table(df)
# get all column names except "x"
key.cols <- setdiff(names(df), "x")
# set the data.table columns to key.cols
setkeyv(dt, key.cols)
dt.out <- dt[, list(x=seq(sub("-.*$", "", x), sub(".*-", "", x))), by = key.cols]

这应该给你你所期望的。

关于r - 将分组的连续变量转换为 R 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14792360/

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