我非常感谢在以下情况下使用R代码的一些帮助:
这是数据集的前11行:
Sa1_main11 Sa1_main11_2
20401106101 20401106101 -
20401106101 21105128609 -
20401106101 21105128653
20601110501 20601110501
20601110501 20601110530
20601110501 20601110531
20601110501 20601110532
20601110501 20601110533
20601110501 20601110534
20601110501 20601110614
20601110502 20601110502
SA1是澳大利亚统计局使用的地理单位。
此文件是SA1连续的列表 - 第1列是基本SA1,第二列是与第一个SA1相邻的SA1。
例如,取前3行
我需要做的是制作一个数据集,其中第一行的格式为
20401106101 21105128609 21105128653
我已经尝试了reshape2
包,但缺少行标签(这些都是相同的)会让我觉得不可能。
编辑 - 这是指向数据的链接
https://www.dropbox.com/s/tigqdevybskm1bs/Original.JPG
这里是前三行应该是什么样子的链接
答案 0 :(得分:0)
看起来split
可能会对您有所帮助:
split(DF[,2], DF[,1])
#$`20401106101`
#[1] 20401106101 21105128609 21105128653
#
#$`20601110501`
#[1] 20601110501 20601110530 20601110531 20601110532 20601110533 20601110534 20601110614
#
#$`20601110502`
#[1] 20601110502
目前还不清楚您打算如何处理这些数据。 data.frames和matrices都不能包含不同长度的行。因此复制确切的结果有点复杂(并且不是很有用)。无论如何,这将会接近:
res <- split(DF[,2], DF[,1])
res <- lapply(res, function(x) {
length(x) <- max(sapply(res, length))
x
})
do.call(rbind, res)
# [,1] [,2] [,3] [,4] [,5] [,6] #[,7]
#20401106101 20401106101 21105128609 21105128653 NA NA NA NA
#20601110501 20601110501 20601110530 20601110531 20601110532 20601110533 20601110534 20601110614
#20601110502 20601110502 NA NA NA NA NA NA
答案 1 :(得分:0)
检查是否有效:( dat
是数据集)
library(reshape2)
dat$indx <- with(dat, ave(seq_along(Sa1_main11), Sa1_main11, FUN=seq_along))
dcast(dat, Sa1_main11~indx, value.var="Sa1_main11_2")
# Sa1_main11 1 2 3 4 5
#1 20401106101 20401106101 21105128609 21105128653 NA NA
#2 20601110501 20601110501 20601110530 20601110531 20601110532 20601110533
#3 20601110502 20601110502 NA NA NA NA
# 6 7
#1 NA NA
#2 20601110534 20601110614
#3 NA NA