小编BiX*_*XiC的帖子

R中的MLE错误:'vmmin'中的初始值不是有限的

假设我有2个data.frame对象:

df1 <- data.frame(x = 1:100)
df1$y <- 20 + 0.3 * df1$x + rnorm(100)
df2 <- data.frame(x = 1:200000)
df2$y <- 20 + 0.3 * df2$x + rnorm(200000)
Run Code Online (Sandbox Code Playgroud)

我想做MLE.随着df1一切正常:

LL1 <- function(a, b, mu, sigma) {
    R = dnorm(df1$y - a- b * df1$x, mu, sigma) 
    -sum(log(R))
}
library(stats4)
mle1 <- mle(LL1, start = list(a = 20, b = 0.3,  sigma=0.5),
        fixed = list(mu = 0))

> mle1
Call:
mle(minuslogl = LL1, start = list(a …
Run Code Online (Sandbox Code Playgroud)

r mle

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

05:00:00 - 28:59:59时间格式

我有数据集,time.start从5:00:00到28:59:59(即01.01.2013 28:00:00实际上是02.01.2013 04:00:00).日期是%d.%m.%Y格式.

      Date Time.start   
01.01.2013   22:13:07
01.01.2013   22:52:23
01.01.2013   23:34:06
01.01.2013   23:44:25
01.01.2013   27:18:48
01.01.2013   28:41:04
Run Code Online (Sandbox Code Playgroud)

我想将其转换为普通日期格式.

dates$date <- paste(dates$Date,dates$Time.start, sep = " ")
dates$date <- as.POSIXct(strptime(dates$date, "%m.%d.%Y %H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)

但显然我有NA时间> 23:59:59

我应该如何修改我的代码?

r date posixct

10
推荐指数
2
解决办法
1192
查看次数

优雅的方式从数据框中删除稀有因子水平

我想按因子对数据帧进行子集化.我只想保留高于特定频率的因子水平.

df <- data.frame(factor = c(rep("a",5),rep("b",5),rep("c",2)), variable = rnorm(12))
Run Code Online (Sandbox Code Playgroud)

此代码创建数据框:

   factor    variable
1       a -1.55902013
2       a  0.22355431
3       a -1.52195456
4       a -0.32842689
5       a  0.85650212
6       b  0.00962240
7       b -0.06621508
8       b -1.41347823
9       b  0.08969098
10      b  1.31565582
11      c -1.26141417
12      c -0.33364069
Run Code Online (Sandbox Code Playgroud)

而且我想降低重复次数少于5次的因子水平.我开发了一个for循环,它正在工作:

for (i in 1:length(levels(df$factor))){
  if(table(df$factor)[i] < 5){
    df.new <- df[df$factor != names(table(df$factor))[i],] 
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,存在更快更漂亮的解决方案吗?

r subset

9
推荐指数
3
解决办法
4424
查看次数

如何突出两行之间的区域?ggplot

我有包含变量的数据框,它是conf.间隔

time x     x.upper   x.lower
   1 1.00     0.91      1.11
   2 1.03     0.92      1.13
   3 1.03     0.95      1.17
   2 1.06     0.90      1.13
Run Code Online (Sandbox Code Playgroud)

ggplot:

library(ggplot2)
ggplot(data = df,aes(time,x))+
    geom_line(aes(y = x.upper), colour = 'red') +
    geom_line(aes(y = x.lower), colour = 'blue')+
    geom_line()
Run Code Online (Sandbox Code Playgroud)

我想突出红线和蓝线之间的区域,smth类似于geom_smooth()功能.我该怎么做?

r ggplot2

7
推荐指数
1
解决办法
6211
查看次数

lapply 2在一个命令中起作用

我想更改数据框中的一些名称 df

> names(df)[17:26]
[1] "X1."  "X2."  "X3."  "X4."  "X5."  "X6."  "X7."  "X8."  "X9."  "X10."
Run Code Online (Sandbox Code Playgroud)

我想要"X" - >"到达"并删除点.我用lapply:

change <- function(d){
    gsub("X","reach",d) 
    gsub("\\.","",d)
}
a <- as.character(lapply(names(df)[17:26], change))
Run Code Online (Sandbox Code Playgroud)

但"X"没有改变.为什么?

> a 
[1] "X1"  "X2"  "X3"  "X4"  "X5"  "X6"  "X7"  "X8"  "X9"  "X10"
Run Code Online (Sandbox Code Playgroud)

r names lapply dataframe

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

在ggplot中更改部分时间x轴标签

我有这样的数据框:

d <- data.frame(time = seq(as.POSIXct("01.01.2014 05:00:01",
                                  format = "%d.%m.%Y %H:%M:%S"),
                       as.POSIXct("02.01.2014 05:00:00",
                                  format = "%d.%m.%Y %H:%M:%S"),
                       length.out = 1440))
d$variable <- rnorm(1440)
Run Code Online (Sandbox Code Playgroud)

我做了ggplot d

library(ggplot2)
library(scales)
ggplot(data = d, aes(time,variable)) + 
  geom_point() +
  scale_x_datetime(labels = date_format("%H:%M"),breaks = "1 hour")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我希望从00:00到05:00更改x轴标签的一部分而不是这个x轴标签我希望24:00到29:00.

是否可以使用scale_x_datetime函数执行此操作,或者可能与它类似?

time axis r ggplot2

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

标签 统计

r ×6

ggplot2 ×2

axis ×1

dataframe ×1

date ×1

lapply ×1

mle ×1

names ×1

posixct ×1

subset ×1

time ×1