Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环和If语句以填充R中的主位置_R_Loops_If Statement_While Loop_Spatial - Fatal编程技术网

循环和If语句以填充R中的主位置

循环和If语句以填充R中的主位置,r,loops,if-statement,while-loop,spatial,R,Loops,If Statement,While Loop,Spatial,R代码:我正在寻找一些帮助排序的空间位置,以分配什么数额的房子和地址在一个新的列。我已经尝试了一百万个“for,if-else,if-else,foreach,while”循环组合。我有几个csv文件,我附加了这些文件,然后添加了一些额外的列。具体来说,我为Age==Senior添加了一个真/假1/0来标识一个新的家庭位置。目标是在出现1时分配相同的门牌号,并将该门牌号保留到下一个1。分配完所有门牌号后,我想在每个建筑位置生成所有lat/long的中位数,并将该中位数lat/long分配到一个新

R代码:我正在寻找一些帮助排序的空间位置,以分配什么数额的房子和地址在一个新的列。我已经尝试了一百万个“for,if-else,if-else,foreach,while”循环组合。我有几个csv文件,我附加了这些文件,然后添加了一些额外的列。具体来说,我为Age==Senior添加了一个真/假1/0来标识一个新的家庭位置。目标是在出现1时分配相同的门牌号,并将该门牌号保留到下一个1。分配完所有门牌号后,我想在每个建筑位置生成所有lat/long的中位数,并将该中位数lat/long分配到一个新列中。中位数有助于我在每个建筑位置的GPS跳跃。我只能数房子了。 第一张表:

纬度 经度 年龄 空间标识 地区 5.582719 -0.1596583 级别高的 1. tc01 5.582721 -0.1596585 成人 0 tc01 5.588345 -0.1656207 级别高的 1. tc01 5.588341 -0.1656206 成人 0 tc01 5.588342 -0.1656202 成人 0 tc01 5.588348 -0.1656203 小孩 0 tc01 5.588219 -0.1653842 级别高的 1. tc01 5.588219 -0.1653842 成人 0 tc01 5.588225 -0.1653841 小孩 0 tc01 5.588226 -0.1653841 小孩 0 tc01
您可以在
diff
差异按
1
增长的地方查找,取
cumsum
并放入
sprintf

d <- transform(d, spatial_bldg=sprintf("%s_1%05d", District, 
                                       cumsum(diff(c(0, Spatial_id)) == 1)))
d
#    Latitude  Longitude    Age Spatial_id District spatial_bldg
# 1  5.582719 -0.1596583 Senior          1     tc01  tc01_100001
# 2  5.582721 -0.1596585  Adult          0     tc01  tc01_100001
# 3  5.588345 -0.1656207 Senior          1     tc01  tc01_100002
# 4  5.588341 -0.1656206  Adult          0     tc01  tc01_100002
# 5  5.588342 -0.1656202  Adult          0     tc01  tc01_100002
# 6  5.588348 -0.1656203  Child          0     tc01  tc01_100002
# 7  5.588219 -0.1653842 Senior          1     tc01  tc01_100003
# 8  5.588219 -0.1653842  Adult          0     tc01  tc01_100003
# 9  5.588225 -0.1653841  Child          0     tc01  tc01_100003
# 10 5.588226 -0.1653841  Child          0     tc01  tc01_100003
# 11 5.587270 -0.1743943 Senior          1     tc01  tc01_100004
# 12 5.587271 -0.1743942  Adult          0     tc01  tc01_100004
# 13 5.587270 -0.1743947  Child          0     tc01  tc01_100004
# 14 5.587282 -0.1743944  Child          0     tc01  tc01_100004
# 15 5.587273 -0.1743942  Adult          0     tc01  tc01_100004
# 16 5.587273 -0.1743941  Child          0     tc01  tc01_100004

请在您的问题中添加一个标记,表示您正在使用的语言。对不起,我使用的是R。您能使您的数据集重现吗?希望这能奏效。我第一次在github中加载。这是一个很棒的东西@jay.sf,但是我有点困惑。我查了一下所有的工具,在那里看到了所有更基本的工具。首先,我可以看到05d是一种以5“00000”开始计数的方法,但不确定d代表什么(根据帮助文档,数字或逻辑变量)。第二部分,对差异函数的理解。我不明白“x”是什么意思“正在差异部分中执行。但是,一旦发现0,1之间的差异,cumsum发现它等于1,然后sprint将其全部打包,放入一个新列中。问题是我抛出一个未知错误,因为x没有值。
>tc01\u new如果我使用差异写出一个x,则差异会产生一个负值a。”nd不会写入所有16个对象。它会在15处停止。尝试使用它会引发错误。
x很抱歉回复太晚,我以为我已经发布了一条评论来表示感谢@jay.sf。这就成功了:)
d <- read.csv("https://github.com/tnewton2/Rproject_tnewton2/files/6050112/merge_tc01.txt")