假设我有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) 我有数据集,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
我应该如何修改我的代码?
我想按因子对数据帧进行子集化.我只想保留高于特定频率的因子水平.
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)
但是,存在更快更漂亮的解决方案吗?
我有包含变量的数据框,它是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()功能.我该怎么做?
我想更改数据框中的一些名称 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) 我有这样的数据框:
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函数执行此操作,或者可能与它类似?