我正在尝试用加拿大沿海省份的插图制作我的现场地图。到目前为止我有以下内容:
map("worldHires", "Canada", xlim=c(-65.5,-64), ylim=c(45.5,46.35), col="gray90", fill=TRUE)
box(which="plot", lty="solid")
par(mar=c(0,0,0,0))
points(coord$long, coord$lat, col=coord$sp, pch=20, cex=0.75)
legend(-65.5, 46.35, c("BARS, CLSW & TRES", "BANS", "TRES"), col=c(2,1,3), pch=20, cex=0.75)
Run Code Online (Sandbox Code Playgroud)
coord$long 和 coord$lat 是每个地点的纬度和经度坐标,coord$sp 表示每个地点的物种。
map("worldHires", "Canada", xlim=c(-68,-59.9), ylim=c(43.5,48), col="gray90", fill=TRUE)
box(which="plot", lty="solid")
par(mar=c(0,0,0,0))
rect(-65.5, 45.5, -64, 46.35, angle=45)
Run Code Online (Sandbox Code Playgroud)
我在将插图放入现场站点地图的左下角时遇到问题。我查看了以下选项:
这个问题中的layout()选项(Layout with 'maps' package),但这不会将插图放置在我的其他地图中
par(usr=) 这个问题的选项(http://r.789695.n4.nabble.com/inset-one-map-on-top-of-another-map-td3848752.html),但我不知道如何确定计算值
本示例中的 par(plt=) 选项(http://wiki.cbr.washington.edu/qerm/sites/qerm/images/7/78/MakingAnInsetMapShorter.r),但同样,我不知道这些值如何被确定。
潜在的令人困惑的问题之一是我上面用来创建这些地图的代码可能没有使用整个绘图窗口 - 但我也不确定如何更改它。
任何帮助将不胜感激。
我有一个数据集,我尝试使用if else语句基于不同的变量来更改某些变量的值。但是,我只想在满足特定条件时更改变量-否则我希望变量保持不变。如何在dplyr中执行此操作?
例如,如果我有4个站点(a,b,c和d),分别与10、20、30和40的值相关联,而我只想将站点a的10的值更改为12 。
df2 <- df %>%
mutate(lat = ifelse(site == "a", 12, WHAT GOES HERE?))
Run Code Online (Sandbox Code Playgroud) 我有一个列表,其中包含有关南美洲许多动物可能位置的信息。例如,这是存储信息的类型以及为第一个个体绘制时的外观。
例子:
> s[1]
[[1]]
class : RasterLayer
dimensions : 418, 313, 130834 (nrow, ncol, ncell)
resolution : 0.16666, 0.16666 (x, y)
extent : -86.333, -34.16842, -55.91633, 13.74755 (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : in memory
names : layer
values : 0, 1 (min, max)
> plot(s[[1]])
Run Code Online (Sandbox Code Playgroud)
注:绿色区域均为“可能”位置,灰色区域为“不太可能”位置。
我想计算这个可能位置的质心(即绿色区域的质心)。
@dww 下面建议了以下解决方案(适用于模拟数据),但会导致我的数据出现错误消息。
colMeans(xyFromCell(s, which(s[]==1)))
Error in xyFromCell(s[1], which(s[] == 1)) :
trying to get slot "extent" from an object of a basic class ("list") with no …Run Code Online (Sandbox Code Playgroud) 我试图限制具有时态数据(POSIXct 格式)的图表的 x 轴范围。
str(df.alltags_barn.path$ts.h)
POSIXct[1:61558], format: "2018-07-04 22:48:08" "2018-07-04 22:48:46" "2018-07-04 23:05:17" ...
Run Code Online (Sandbox Code Playgroud)
我尝试了以下两种具有不同错误消息的方法
p <- ggplot(data = filter(df.alltags_barn.path, mfgID %in% c(52)),
aes(ts.h, recvLon))
p + geom_point() + geom_path() + theme_bw() +
facet_wrap(~mfgID, scales = "free", ncol = 4) +
xlim(as.Date(c("2018-08-13", "2018-08-20")), format="%d/%m/%Y") +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))
Run Code Online (Sandbox Code Playgroud)
limit.Date(c(...), "x") 中的错误:length(lims) == 2 不为 TRUE
p <- ggplot(data = filter(df.alltags_barn.path, mfgID %in% c(52)),
aes(ts.h, recvLon))
p + geom_point() + geom_path() …Run Code Online (Sandbox Code Playgroud) 我有两个数据框,一个包含我的所有数据,另一个包含一些数据的更正 ID 号。
当我尝试使用左联接、内联接或完全联接来联接这些值时,我最终得到两个 ID 列(ID.x 和 ID.y)。无论如何要这样做,以便我更正的数据集中的 ID 简单地替换完整数据集中的 ID?
例如,
df.full <- left_join(df.full, correctID,
by = c("value"))
Run Code Online (Sandbox Code Playgroud)
我已经尝试了 copy = TRUE 和 FALSE,但这似乎没有帮助。
我有一个数据集,其中列是不同的站点,前两行提供了纬度和经度值。我想转置这些数据,以便每个站点现在都是一行,列中包含纬度和经度值。
我正在尝试使用 执行此操作pivot_longer,但迄今为止尚未成功,因为从示例中我不清楚如何指示哪些字段应该是新的行和列。
df <- data.frame(
sites = c("lat", "lon"),
A = c(10, 20),
B = c(12, 18),
C = c(14, 17),
D = c(21, 12),
E = c(3, 23)) %>%
# transpose with sites in 1st column (A-E on different rows) and lat/lon values in seperate columns
pivot_longer(cols = c(2:6),
names_to = c("lat", "lon"),
values_to = "sites")
Error in `build_longer_spec()`:
! If you supply multiple names in `names_to` you must also supply one of `names_sep` or `names_pattern`. …Run Code Online (Sandbox Code Playgroud) 我有一个数据集,其中包含不同地点不同物种的计数值。该数据集不包括对物种进行调查但未发现的地点(计数 = 0)。我尝试使用 dplyr Complete 函数来填写所有站点,但我不断收到以下错误消息:
Error: `by` can't contain join column `site %in% possibleSites` which is missing from RHS
Run Code Online (Sandbox Code Playgroud)
下面提供了一个示例数据集。
注意:我的实际数据包括其他信息,例如这些不同站点的纬度和经度、一天中的时间等,我还需要将其包含在最终数据集中。
species <- c(rep("A", 5), rep("B", 5), rep("C", 5))
site <- rep(sample(letters[1:10], 5, replace = FALSE), 3)
count <- sample(1:50, 15, replace = TRUE)
df <- data.frame(species, site, count)
possibleSites <- letters[1:10]
df %>%
complete(site %in% possibleSites,
nesting(species),
fill = list(count = 0))
Run Code Online (Sandbox Code Playgroud)
我将不胜感激帮助解决这个问题。