小编Mrm*_*eje的帖子

R测量距海岸线的距离

我有一组坐标:

d1 <- data_frame(
title = c("base1", "base2", "base3", "base4"),
lat = c(57.3, 58.8, 47.2, 57.8, 65.4, 56.7, 53.3),
long = c(0.4, 3.4, 3.5, 1.2, 1.5, 2.6, 2.7))
Run Code Online (Sandbox Code Playgroud)

我想知道坐标是落在陆地上,在海中还是在海岸线内3英里处。坐标应该在英国的某个地方,所以我知道我需要绘制英国的形状文件并将其绘制在上面。

我只是不知道如何测量这些点是落在海洋,陆地还是在距海岸2英里的地方。显然,从查看地图可以看出它们落在哪里,但是我想在数据集中添加另一列,如下所示:

 d2 <- data_frame(
title = c("base1", "base2", "base3", "base4", "base5", "base6", "base7"),
lat = c(57.3, 58.8, 47.2, 57.8, 65.4, 56.7, 53.3),
long = c(0.4, 3.4, 3.5, 1.2, 1.5, 2.6, 2.7),
where = c("land", "land", "sea", "coast", "land", "sea", "coast"))
Run Code Online (Sandbox Code Playgroud)
  • 请注意,d2列“ where”中的数据是说明性的,这些经纬度可能全部在陆地上,或其他

r geospatial r-sp geosphere

7
推荐指数
2
解决办法
1234
查看次数

R读取excel文件并选择特定的行和列

我想将一个 xls 文件读入 R 并选择特定的列。例如,我只需要第 1 到 10 列和第 5 行到第 700 行。我认为您可以使用 xlsx 执行此操作,但我无法在我正在使用的网络上使用该库。我可以使用另一个包吗?我将如何选择我想要的列和行?

谢谢

r

6
推荐指数
1
解决办法
3万
查看次数

R:计算从一个点到另一个点的距离(以英里为单位)

我有以下数据框:

library(dplyr)

d1 <- data_frame(
title = c("base1", "base2", "base3", "base4"),
lat = c(57.3, 58.8, 47.2, 57.8),
long = c(0.4, 3.4, 3.5, 1.2))

d2 <- data_frame(
tas = c("tas1", "tas2", "tas3", "tas4"),
Base= c ("base1", "base2", "base3", "base4"),
lat=c(54.6, 56.4, 54.2, 54.6),
long = c(1.2, 3.4, 3.5, 56.6))
Run Code Online (Sandbox Code Playgroud)

我想做的是计算d2中tas与d1中标题之间的距离(以英里为单位)。因此,在d2中,tas1的坐标为54.6 lat,长度为1.2,在'Base'列中具有'base1'。所以我想计算54.6lat x 1.2long和57.3lat与0.4lon之间的距离。

我尝试使用GeoDistanceInMetresMatrix下面详细介绍的函数来执行此操作,但是该函数并没有给我想要的结构。

下面的文章提供了有关GeoDistanceInMetresMatrix的一些信息

http://eurekastatistics.com/calculating-a-distance-matrix-for-geographic-points-using-r/

这是我希望数据看起来像的样子:

 df <- data_frame(
tas = c("tas1", "tas2", "tas3", "tas4"),
Base= c ("base1", "base2", "base3", "base4"),
lat=c(54.6, 56.4, 54.2, 54.6),
long = c(1.2, …
Run Code Online (Sandbox Code Playgroud)

r geospatial dplyr geosphere

3
推荐指数
2
解决办法
1119
查看次数

根据给定条件突变多个变量

我有以下数据:

  library(dplyr)

     d <- data_frame(
      region = c('all', 'nj', 'rkl', 'all'),
      figures= c(5, 7, 4, 8),
      figures2 = c(3, 5, 6, 7))
Run Code Online (Sandbox Code Playgroud)

我想用dplyr来表示“区域” =“全部”时,然后将“数字”和“数字2”设置为“ x”。我不想使用mutate创建新变量,而是要更改已经存在的变量中的值。因此数据如下所示:

  d2 <- data_frame(
          region = c('all', 'nj', 'rkl', 'all'),
          figures= c(x, 7, 4, x),
          figures2 = c(x, 5, 6, x))
Run Code Online (Sandbox Code Playgroud)

我想我需要这样的东西:

 d %>% mutate_at(vars(1:3), funs(ifelse(region = 'all', 'x', .)))
Run Code Online (Sandbox Code Playgroud)

但是,这不太起作用。

r dplyr mutate

2
推荐指数
1
解决办法
135
查看次数

当有NA时,将数据从一列移动到另一列

我有以下数据:

library(dplyr)

d <- data_frame(
     unique = c(1,2,3,4),
     lat = c(NA, 87.6, 78.6, 67.7),
     latitude= c(34.5, NA, 45.6, 34.8))
Run Code Online (Sandbox Code Playgroud)

我想要做的是当lat中有一个'NA'时(例如在第1列'lat'中有一个NA),取纬度值.所以我最终会得到一个名为'latitude_new'的新列(34.5, 87.6, 45.6, 34.8).

我确信这可以使用'来自dplyr的mutate来完成,我只是不太确定如何?

r dplyr

0
推荐指数
1
解决办法
72
查看次数

dplyr 所选行的行总和

我有以下数据:

library(dplyr)
library(purrr)

 d <- data.frame(
  Type= c("d", "e", "d", "e"),
  "2000"= c(1, 5, 1, 5),
  "2001" = c(2, 5 , 6, 4),
  "2002" = c(8, 9, 6, 3))
Run Code Online (Sandbox Code Playgroud)

我想使用 rowsum 和 mutate 生成一个新行,它是“d”的总和,另一行是“e”的总和,这样数据看起来像这样:

d2 <- data.frame(
Type= c("d", "e", "d", "e", "sum_of_d", "Sum_of_e"),
"2000"= c(1, 5, 1, 5, 2, 10),
"2001" = c(2, 5 , 6, 4, 8, 9),
"2002" = c(8, 9, 6, 3, 14, 12))
Run Code Online (Sandbox Code Playgroud)

我认为代码应该是这样的:

d %>% 
 dplyr::mutate(sum_of_d = rowSums(d[1,3], na.rm = TRUE)) %>% 
 dplyr::mutate(sum_of_e = …
Run Code Online (Sandbox Code Playgroud)

r rowsum dplyr

0
推荐指数
1
解决办法
2753
查看次数

标签 统计

r ×6

dplyr ×4

geospatial ×2

geosphere ×2

mutate ×1

r-sp ×1

rowsum ×1