当excel表在ArcGIS中作为xy点导入时,我继续丢失每个点的正确DateTime标记.因此,我已经格式化了DateTime序列号,创建了.shp,并使用readOGR()将.shp读入R中.
一旦在RI中可以使用as.Date()和origin = "1899-12-30"参数转换为正确的日期,但是时间被省略了.虽然我已经看到了具有唯一Date的示例,但我还没有看到DateTime的工作示例.我一直在使用as.Date(),as.POSIXct()但这个看似简单的任务有点令人沮丧,因此帖子......
我创建了一个样本数据集,其中包含10行正确的DateTime格式以及excel序列号.
*感谢Richard和thelatemail对早期障碍的敏锐关注.我已更正数据并在此处重新发布.
这是我的示例数据
helpData <- structure(list(ID = 1:10, DateTime = structure(c(9L, 1L, 2L,
3L, 4L, 5L, 6L, 7L, 8L, 8L), .Label = c("3/11/2011 7:55", "3/13/2011 7:55",
"3/14/2011 0:00", "3/14/2011 10:04", "3/14/2011 7:55", "3/15/2011 19:55",
"3/17/2011 7:55", "3/18/2011 4:04", "3/4/2011 6:00"), class = "factor"),
ExcelNum = c(40606.25, 40613.32986, 40615.32986, 40616, 40616.41944,
40616.32986, 40617.82986, 40619.32986, 40620.16944, 40620.16944
)), .Names = c("ID", "DateTime", "ExcelNum"), class = "data.frame", row.names = c(NA,
-10L)) …Run Code Online (Sandbox Code Playgroud) 这个问题来自这里发现的SO帖子 ,并使用从R-help邮件列表上的帖子修改的代码,这里可以看到
我试图在数据框中提取行的随机样本,但条件.使用iris看起来像这样的R 数据:
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
Run Code Online (Sandbox Code Playgroud)
要获取一个简单的随机样本,下面的代码可以正常处理2行样本.
iris[sample(nrow(iris), 2), ]
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何调节Species字段.例如,如何采用如上所述的随机样本,但仅限于Species != “setosa”
有三类 iris$Species
> summary(iris$Species)
setosa versicolor virginica
50 50 50
Run Code Online (Sandbox Code Playgroud)
我不确定如何正确嵌套条件.我之前的一个尝试是在下面,其中包括明显不正确的结果......
> iris[sample(nrow(iris)[iris$Species != "setosa"], 2), ] …Run Code Online (Sandbox Code Playgroud) 说我data.frame看起来像这样
df <- data.frame(AAA = rep(c(NA,sample(1:10, 1)),5),
BBB = rep(c(NA,sample(1:10, 1)),5),
CCC = rep(c(sample(1:10, 1),NA),5))
> df
AAA BBB CCC
1 NA NA 10
2 3 7 NA
3 NA NA 10
4 3 7 NA
5 NA NA 10
6 3 7 NA
7 NA NA 10
8 3 7 NA
9 NA NA 10
10 3 7 NA
Run Code Online (Sandbox Code Playgroud)
我想将列CCC向下移动一个,以便所有数字在一行中对齐,然后删除不包含数据的行(通常每隔一行 - 但不总是 - 模式可能会因此而变化data.frame.
我想Dist使用这些数据(下面)计算每周的平均值,同时保留使用POSIXct时间类的好处.
df <- structure(list(IndID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), class = "factor", .Label = "AAA"),
Date = structure(c(1329436800, 1329458400, 1329480000, 1329501600,
1329523200, 1329544800, 1329566400, 1329588000, 1329609600,
1329631200, 1329652800, 1329674400, 1329696000, …Run Code Online (Sandbox Code Playgroud) 我在for()循环中填充列表.结果的样本包括在下面.
dta <- list(structure(c(128L, 175L), .Dim = 2L, .Dimnames = structure(list(
c("0", "1")), .Names = ""), class = "table"), structure(c(132L,
171L), .Dim = 2L, .Dimnames = structure(list(c("0", "1")), .Names = ""), class = "table"),
structure(c(130L, 173L), .Dim = 2L, .Dimnames = structure(list(
c("0", "1")), .Names = ""), class = "table"), structure(c(133L,
170L), .Dim = 2L, .Dimnames = structure(list(c("0", "1")), .Names = ""), class = "table"))
Run Code Online (Sandbox Code Playgroud)
每个列表显示给定数据集的0和1的数量.
> head(dta)
[[1]]
0 1
128 175
[[2]]
0 1
132 171 …Run Code Online (Sandbox Code Playgroud) 我是 ggplot 的相对新手,并使用此处包含的数据和代码制作了下图\xe2\x80\xa6
\n\n数据在这里
\n\nData <- structure(list(IndID = structure(1:17, .Label = c("AA", "BB", \n"CC", "DD", "EE", "FF", "GG", "HH", "II", "JJ", "KK", "LL", "MM", \n"NN", "OO", "PP", "QQ"), class = "factor"), Avg = c(7.95, 10.483, \n5.951, 7.359, 10.465, 10.745, 14.402, 81.417, 67.087, 4.254, \n34.393, 47.324, 60.713, 75.446, 64.527, 28.779, 54.764), AvgSE = c(1.685, \n2.949, 1.097, 2.607, 4.256, 3.539, 1.702, 3.314, 0.714, 0.302, \n1.154, 1.827, 0.573, 1.292, 1.955, 1.341, 1.949), OBS = c(7.667, \n10, 8, 7.5, 14, 10.333, 12, …Run Code Online (Sandbox Code Playgroud) 如果我有这个清单
set.seed(123)
thelist <- list(a=data.frame(x1=rnorm(10), x2=rnorm(10)),
b=data.frame(x1=rnorm(10), x2=rnorm(10)),
c=data.frame(x1=rnorm(10), x2=rnorm(10)))
Run Code Online (Sandbox Code Playgroud)
并且想要使用以下代码计算每个列表中每列的平均值.
sapply(do.call("rbind",thelist),mean)
Run Code Online (Sandbox Code Playgroud)
我怎样才能为每个列表中的每一列(a:c)计算标准偏差,因为sd没有等效函数(至少据我所知)?
任何建议将不胜感激.
我列出了六个人,每个人都有25个号码.这里的数据是通过dput()
data <- structure(list(AAA = structure(c(0.539032790443548, 0.536888048404759,
0.519687575144773, 0.540104624777809, 0.57386075783306, 0.539805870321112,
0.538733934351732, 0.530445942604962, 0.521841030809798, 0.541176088266961,
0.56539960323135, 0.551570726188792, 0.557196928234619, 0.517533387708244,
0.567518667655521, 0.532295137298835, 0.542247171136739, 0.541948628127994,
0.533668399132029, 0.546527501435108, 0.529071565146478, 0.575969506937413,
0.556132191844378, 0.572805370086458, 0.525845566212544), .Dim = c(25L,
1L)), BBB = structure(c(0.499216657615325, 0.537490952761078,
0.43385212802169, 0.582152772934407, 0.495717756862187, 0.535025311378272,
0.43385212802169, 0.607585618769066, 0.51961831826224, 0.477799201847025,
0.593737672553431, 0.448083953208316, 0.564607973025657, 0.381933810565836,
0.582152772934407, 0.555267755972877, 0.454004260019714, 0.596126995098342,
0.469366643373233, 0.489741406245514, 0.39565274890788, 0.523110920308712,
0.517142992101799, 0.39565274890788, 0.578744364954426), .Dim = c(25L,
1L)), CCC = structure(c(0.517638997604126, 0.514052704141984,
0.485341292016175, 0.524805767901646, 0.435170284293271, 0.485341292016175,
0.481755279544946, 0.506876143514677, 0.421108263752241, 0.488653944275884,
0.383154152708813, 0.578031931495085, 0.477896667937187, …Run Code Online (Sandbox Code Playgroud) 这个问题是从一篇相关文章构建的,该文章展示了如何使用包中的函数轻松地将绘图存储为r对象。伟大的!但是,我现在想创建一个将基本 r 图与 2 个数字相结合的多重图。我在用%<a-%pryrggplotgrid.arrange下面。
使用基本 rcars数据我可以制作两个ggplot数字。
library(ggplot2)
library(pryr)
library(gridExtra)
Fig1 <- qplot(speed, data=cars, geom="histogram")
Fig2 <- qplot(dist, speed, data=cars, geom="point")
Run Code Online (Sandbox Code Playgroud)
然后,我使用 制作一个图形,并使用包中的函数plot将该图形保存为对象。光滑。%<a-%pryr
Fig3 %<a-% plot(cars$speed, cars$dist)
Fig3
Run Code Online (Sandbox Code Playgroud)
最后,我想将这 3 个数字组合成一个图,如下所示。
Figs <- grid.arrange(Fig1, Fig2, Fig3,
layout_matrix = rbind(c(1,1,1,2,2), c(1,1,1,2,2), c(3,3,3,3,3)))
Run Code Online (Sandbox Code Playgroud)
该代码产生以下错误:
Error in gList(list(grobs = list(list(x = 0.5, y = 0.5, width = 1, height = 1, :
only 'grobs' allowed in …Run Code Online (Sandbox Code Playgroud) 下面的数据包含单个 ID 的列(具有重复观察)Date和Fate。
ID Date Fate
1 BHS_1149 2017-04-11 MIA
2 BHS_1154 <NA> <NA>
3 BHS_1155 <NA> <NA>
4 BHS_1156 <NA> <NA>
5 BHS_1157 <NA> Mort
6 BHS_1159 2017-04-11 Alive
7 BHS_1169 2017-04-11 Alive
8 BHS_1259 <NA> <NA>
9 BHS_1260 <NA> <NA>
10 BHS_1262 2017-04-11 MIA
11 BHS_1262 2017-07-05 Alive
12 BHS_1262 2017-12-06 Alive
13 BHS_1262 2017-12-06 MIA
14 BHS_1262 2018-01-17 Mort
Run Code Online (Sandbox Code Playgroud)
对于每个 ID,我想创建一个新列来表示活动时的最小值Date或最大值。如果在下面的代码中包含和排除参数,我尝试了不同的组合,但仍然收到以下警告。DateFatena.rm = T
library(tidyverse)
library(lubridate)
dat %>%
group_by(ID) …Run Code Online (Sandbox Code Playgroud)