我是一个相对较新的 R 用户,但为了完成我的实习研究任务,我不得不即时自学这门语言。
我正在使用起点-终点人口普查数据文件。这个数据看起来有点像这样:
w_geocode h_geocode S000 SA01 SA02 SA03 SE01 SE02 SE03 SI01 SI02 SI03
1 360010001001005 - 360010001001010 - 1 0 1 0 0 0 1 1 0 0
2 360010001001005 - 360010001001011 - 1 0 1 0 0 0 1 1 0 0
3 360010001001005 - 360010001001039 - 1 0 1 0 0 0 1 1 0 0
4 360010001001005 - 360010014001009 - 1 0 1 0 0 0 1 0 1 0
5 360010001001005 - 360010015001007 - 1 0 1 0 0 0 1 0 1 0
6 360010001001005 - 360010019011001 - 1 0 1 0 0 0 1 1 0 0
大约有 500 万行这样的数据。这 15 位数字中的每一个都代表一个非常具体的位置。为了使这些数据更相关,我设法使用以下方法将这 15 位代码缩短为 11 位代码:
options(scipen=100) #to avoid scientific notation
nyod=read.csv("ny_od_main_JT00_2010.csv")
x=nyod[,1]
y=nyod[,2]
z=nyod[,3]
tx=trunc(x/10000)
ty=trunc(y/10000)
nyodI=cbind(tx,ty,z)
之后我得到这样的东西:
tx ty z
[1,] 36001000100 36001000100 1
[2,] 36001000100 36001000100 1
[3,] 36001000100 36001000100 1
[4,] 36001000100 36001001400 1
[5,] 36001000100 36001001500 1
[6,] 36001000100 36001001901 1
但是现在,如您所见,我有一些我想汇总的冗余。例如,理想情况下,现在我希望将第 1、2 和 3 行合并为 1,并且 z 的总和等于 3。但我需要为所有冗余完成此过程。
我希望我的问题足够具体,并且对任何可能阅读它的人都有意义。感谢您提供的任何帮助!