循环和If语句以填充R中的主位置
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循环和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分配到一个新
您可以在
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")