4

我正在使用 R 中的生存库。我在生存对象上使用了 residuals(),它很好地输出了我想要的残差。

我的问题是关于 R 如何处理它的行索引。

这是一个示例数据集。我的目标是将它们重新合并在一起。

数据框:

> 1 - .2
> 2 - .4
> 3 - .6
> 4 - .8

输出:

> 1 - .2X
> 2 - .4X
> 4 - .8X

输出是输入的子集(某些数据无法处理)。我想要的是将此新列表添加回原始输入文件以绘制和运行回归等。

我不知道如何访问简单 df[number] 命令之外的行索引。我认为我这样做的方法有点史前。我 write.table() 将它们的行号转换为实际打印列的对象,然后根据这个新键返回并合并。我觉得有一种更聪明的方法可以写出并读回文件。关于如何做的任何建议?

我希望这不是重复的,因为我环顾四周,找不到关于行索引的好的解释。

编辑:

我可以将列名或行名添加到数据框中,但是如果对一维对象(我的输出文件)执行此操作,则会导致 NULL 值。一维对象只有我无法访问的行子集。

行名(res)

无效的

4

3 回答 3

11

您可以直接使用,而不是像上面建议的那样创建新对象merge

写吧:

merge(df1, df2, by.x = 0, by.y = res)

然后by.x=0引用 的行名称df1by.y指的是 df2 的行名。使用这些作为链接执行合并。

于 2016-03-02T20:26:38.523 回答
1

您可以从以下内容创建适当的data.frame对象res

res.df <- data.frame(names=names(res), res=res)

然后将其用作 的输入之一merge

于 2013-07-08T19:09:52.313 回答
0

对于连接,您可以使用 plyr 包中的 merge() 或 join()。

这是一个关于两者的问题: 如何加入(合并)数据帧(内部、外部、左侧、右侧)?

我发现 join() 更直观,具有 SQL 逻辑,而且它似乎在处理大型数据集时表现更好。

于 2013-07-09T01:27:28.947 回答