【发布时间】:2017-01-06 18:10:06
【问题描述】:
我有一个如下所示的数据集。我正在尝试编写 R 代码来转换它。这是自我网络,这意味着第一列有两个人列出了他们的联系(在 A1、A2 和 A3 列中)。然后在第 5 到 10 列中,我有 A1、A2 和 A3 中的人之间的相互关系:
d <- data.frame(matrix(c("Steph","Ellen","John","Jim","Sam","Tom","Sally","Jane","Sam","Jane","Sally","NA","John","Jim","NA","Jane","Sam","NA","NA","Tom"),2,10))
names(d)<-c("Ego","A1","A2","A3","A1Connection1","A1Connection2","A2Connection1","A2Connection2","A3Connection1","A3Connection2")
d
我的挑战是从第 2 列到第 10 列,让它们看起来像这样
ReshapedData<-data.frame(matrix(c("John","John","Sam","Sam","Sally","Sally","Jim","Jim","Tom","Tom","Jane","Jane",
"Sam","Sally","John","NA","Sam","NA","Jane","NA","Jim","Jane","NA","Tom"),12,2))
names(ReshapedData)<-c("Alter", "Alter_Alter")
ReshapedData
我不需要自我的名字,至少在这个阶段。关键是先得到其他的东西。到目前为止,我能想到的最好的事情是在每行中转置第 5-10 列,然后使用 rbind 创建一个长列,然后使用 A1、A2、A3 中的更改列表对其进行 cbind。那必须是一些更简化的方式来管理它。
谢谢
波格丹
【问题讨论】:
-
请不要将数据添加为图片链接。相反,复制并粘贴带有缩进的数据以进行代码格式化。更多关于How to make a great example, see this link
-
感谢您的来信。刚刚更新。