首页 > 解决方案 > 格式化起点和终点数据

问题描述

我想更改我的数据,如下所示。希望你能帮我!

我有这个数据:

Person, Trip,Destination
1, 1,Japan
1,2,US,
2,1,US
2,2, Japan
2,3, China

我想得到这张桌子:

Person, Trip,Origin, Destination
1,1,US, Japan
1,2,Japan, US,
2,1,China, US
2,2, US, Japan
2,3, Japan, China

提前致谢

标签: rdataframeformat

解决方案


我们在最后的注释中使用了可重复显示的数据。这个问题有样本输出,但没有解释它是如何计算的,所以我们只是假设它是由组Destination内的旋转定义的Person。首先定义一个rotation函数,然后使用ave它来应用到每个Person组。最后将列重新排序为问题中显示的顺序。不使用任何包。

rotate <- function(x) c(tail(x, 1), head(x, -1))
transform(DF, Origin = ave(Destination, Person, FUN = rotate))[c(1:2, 4:3)]

给予:

  Person Trip Origin Destination
1      1    1     US       Japan
2      1    2  Japan          US
3      2    1  China          US
4      2    2     US       Japan
5      2    3  Japan       China

笔记

删除第二行数据的尾随逗号,我们假设以下输入:

Lines <- "Person, Trip,Destination
1, 1,Japan
1,2,US
2,1,US
2,2, Japan
2,3, China"
DF <- read.csv(text = Lines, strip.white = TRUE, as.is = TRUE)

推荐阅读