我模拟了一个网上零售市场的数据集。顾客可以在德国的不同商店(如慕尼黑、柏林、汉堡)购买他们的产品。在网上商店。为了从城市中获取纬度/经度数据,我使用了来自geocode的ggmap package。但是网上购物的顾客可以在全国各地购买。现在,我想为网上购物生成德国境内的随机纬度/经度数据,然后用闪亮的传单绘制地图。有办法这样做吗?
我的df看起来如下:
View(df)
ClientId Store ... lat lon
1 Berlin 52 13
2 Munich 48 11
3 Online x x
4 Online x x但我的目标是建立一个数据框架,例如:
ClientId Store ... lat lon
1 Berlin 52 13
2 Munich 48 11
3 Online 50 12
4 Online 46 10有没有办法获取这些随机纬度/经度数据并将其集成到我的数据框架中?
发布于 2017-02-27 05:29:24
你的问题是双重的。首先,作为R的新手,您还没有习惯于所需的语义。从根本上说,你要做的是:
首先,要识别符合标准的数据框架元素,可以使用which函数。因此,要在数据框架中找到存储列与“”相等的行,请执行以下操作:
df[which(df$Store=="Online")]要更新特定行的lat或lon,我们需要能够访问该列。要获取特定列的值,我们使用$。例如,要获取您使用的在线订单的lat值:
df$lat[which(df$Store=="Online")]太棒了!这个问题现在变得越来越复杂。对于新的值,您想要生成简单的值来完成演示,还是要提出新的逻辑来生成给定区域的空间结果?您表示希望在德国自己生成数据点,但是,要做到这一点超出了这个问题的范围。现在,我们将考虑在有界框中生成值并相应更新data.frame的简单示例。
要在给定范围内生成整数值,我们可以使用sample函数。假设您希望lat值在45和55之间,lon值在9到14之间,那么我们可以这样做:
df$lat[which(df$Store=="Online")]<-sample(45:55,length(which(df$Store=="Online")))
df$lon[which(df$Store=="Online")]<-sample(9:14,length(which(df$Store=="Online")))阅读这段代码后,我们使用随机数向量( 48:52 )更新了“联机”订单中的lat值,这是正确的长度(“联机”订单的数量)。
如果您想要更高的十进制精度,您可以使用类似的逻辑与来自均匀分布和runif分布的round函数进行类似的逻辑,以获得适当的精度。祝好运!
https://stackoverflow.com/questions/42477985
复制相似问题