R:有条件地将数据从列复制到行
R: Conditionally duplicating data from columns into rows
我正在尝试插入新行,这些新行会复制该行中包含的某些数据,但第一列将是从 R 中现有列插入的唯一数据。
我正在尝试设置此数据以便在 Tableau 中使用并创建网络可视化。我不希望我的客户在输入数据时插入大量重复数据以创建此可视化效果。
我目前的数据是这样的:
Connection.ID From To Note
1 1 Niamh MacCallum James Fraser Niamh and James are coworkers
2 2 James Fraser Simon David James and Simon are brothers
3 3 Niamh MacCallum Tom Ashton Niamh recruited Tom to join her organization
这是我创建的一些虚假数据,复制了我公司的数据,但目标是能够可视化我们的员工与 customers/volunteers 他们相遇并建立专业关系之间的联系。
我希望我的数据看起来像这样导出到 csv 中:
Connection.ID Node.Name Notes
1 1 Niamh MacCallum Niamh and James are coworkers
2 1 James Fraser Niamh and James are coworkers
3 2 James Fraser James and Simon are brothers
4 2 Simon David James and Simon are brothers
5 3 Niamh MacCallum Niamh recruited Tom to join her organization
6 3 Tom Ashton Niamh recruited Tom to join her organization
我找到了一些创建类似内容的资源,最好的是这个先前提出的问题,但它并没有完全满足我的需要,或者老实说我可能误用了它 ().我以为我可以在删除 "To" 列并将 "From" 重命名为 "Node.Name" 时创建相同的东西,但我创建了重复数据,每行插入了六个副本,同时还错误地将注释应用到错误的连接.
如有任何帮助,我将不胜感激!我是 R 的新手并且是自学成才的,所以如果您有解决方案或资源可以让我学习解决方案,那也很棒。谢谢!
编辑:发现了一个我以前从未见过的类似问题,所以我将其添加到此处以防其他人发现并可以参考它们:Create network files from "classic" dataframe in R - igraph
这是一个从宽到长的转换,可以使用 reshape2
包中的 melt
完成。做:
df2 = melt(data = df,
id.vars = c("Connection.ID","Note"),
measure.vars = c("From","To"),
variable.name = 'From_To',
value.name = "Node.Name" )
# Remove the unwanted From_To column
df2$From_To = NULL
结果:
> df2
Connection.ID Note Node.Name
1 1 Niamh and James are coworkers Niamh MacCallum
2 2 James and Simon are brothers James Fraser
3 3 Niamh recruited Tom to join her organization Niamh MacCallum
4 1 Niamh and James are coworkers James Fraser
5 2 James and Simon are brothers Simon David
6 3 Niamh recruited Tom to join her organization Tom Ashton
我正在尝试插入新行,这些新行会复制该行中包含的某些数据,但第一列将是从 R 中现有列插入的唯一数据。
我正在尝试设置此数据以便在 Tableau 中使用并创建网络可视化。我不希望我的客户在输入数据时插入大量重复数据以创建此可视化效果。
我目前的数据是这样的:
Connection.ID From To Note
1 1 Niamh MacCallum James Fraser Niamh and James are coworkers
2 2 James Fraser Simon David James and Simon are brothers
3 3 Niamh MacCallum Tom Ashton Niamh recruited Tom to join her organization
这是我创建的一些虚假数据,复制了我公司的数据,但目标是能够可视化我们的员工与 customers/volunteers 他们相遇并建立专业关系之间的联系。
我希望我的数据看起来像这样导出到 csv 中:
Connection.ID Node.Name Notes
1 1 Niamh MacCallum Niamh and James are coworkers
2 1 James Fraser Niamh and James are coworkers
3 2 James Fraser James and Simon are brothers
4 2 Simon David James and Simon are brothers
5 3 Niamh MacCallum Niamh recruited Tom to join her organization
6 3 Tom Ashton Niamh recruited Tom to join her organization
我找到了一些创建类似内容的资源,最好的是这个先前提出的问题,但它并没有完全满足我的需要,或者老实说我可能误用了它 (
如有任何帮助,我将不胜感激!我是 R 的新手并且是自学成才的,所以如果您有解决方案或资源可以让我学习解决方案,那也很棒。谢谢!
编辑:发现了一个我以前从未见过的类似问题,所以我将其添加到此处以防其他人发现并可以参考它们:Create network files from "classic" dataframe in R - igraph
这是一个从宽到长的转换,可以使用 reshape2
包中的 melt
完成。做:
df2 = melt(data = df,
id.vars = c("Connection.ID","Note"),
measure.vars = c("From","To"),
variable.name = 'From_To',
value.name = "Node.Name" )
# Remove the unwanted From_To column
df2$From_To = NULL
结果:
> df2
Connection.ID Note Node.Name
1 1 Niamh and James are coworkers Niamh MacCallum
2 2 James and Simon are brothers James Fraser
3 3 Niamh recruited Tom to join her organization Niamh MacCallum
4 1 Niamh and James are coworkers James Fraser
5 2 James and Simon are brothers Simon David
6 3 Niamh recruited Tom to join her organization Tom Ashton