我试图根据其他三个变量的值编写一个新变量.具体来说,如果所有变量都是NA,我希望新变量取NA,如果它们中的任何一个是1,它应该取1,否则它应该取0.但是,我使用下面的代码遇到错误:
frame <- data.frame(x = c(NA,NA,1), x2 = c(NA, NA, 0), x3 = c(NA,0,0))
frame
y <- ifelse(is.na(frame$x) == TRUE & is.na(frame$x2) == TRUE & is.na(frame$x3) == TRUE, NA, 0)
y2 <- ifelse(frame$x == 1 | frame$x2 == 1 | frame$x3 == 1, 1, y)
Run Code Online (Sandbox Code Playgroud)
y的第二个数字正确为0,但在y2中引用时变为NA.知道为什么会这样吗?
我想对ggplot2超出该数据区域的数据子集的数据进行线性拟合(以便可视化外推的危险).在下面的代码中,我想将1980-1990帧生成的线性拟合扩展到1990-2000,这样我就可以在整个时间段内添加完全拟合并可视化差异:
set.seed(123)
frame <- data.frame(year = rep(1980:2000, 10), y = sample(1:1000, 210))
head(frame)
frame1 <- frame[frame$year %in% c(1980:1990),]
frame2 <- frame[frame$year %in% c(1980:2000),]
ggplot(frame1, aes(x = year, y = y)) + geom_point(shape = 1) + geom_smooth(method = lm) + xlim(1980, 2000)
ggplot(frame2, aes(x = year, y = y)) + geom_point(shape = 1) + geom_smooth(method = lm) + xlim(1980, 2000)
Run Code Online (Sandbox Code Playgroud)
我是新手,ggplot2所以如何从第一帧扩展线性拟合,然后添加数据和新的拟合与不同的颜色将是伟大的.谢谢.
我正在使用该data.table程序包将给定位置的每个时间段内具有多个观察值的面板聚合到一个面板中,该面板中的时间段位置具有唯一观察值。但是,在使用NA进行观测汇总时遇到了麻烦。虽然这很好用:
set.seed(123)
data.frame(name = c("a", "a", "a", "b", "b", "b"), t = rep(c(1,2),3), x1 = sample(0:10,6), x2 = sample(0:10,6))
f1
name t x1 x2
a 1 3 5
a 2 7 8
a 1 10 4
b 2 9 3
b 1 6 6
b 2 0 2
f2 <- setDT(f1)[, lapply(.SD, sum(x, na.rm = TRUE)), by = .(name,t), .SDcols = c("x1", "x2")]
f2
name t x1 x2
a 1 13 9
a 2 7 8
b 2 …Run Code Online (Sandbox Code Playgroud) 我是在R中编写函数的新手,想要编写一个创建多个输出的函数,但是我想屏蔽某些对象的输出,使得它们被计算并且可以被调用,但是当它们不能直接输出时功能很有趣.例如:
fun <- function(x){
mean <- mean(x)
sd <- sd(x)
return(list(sd = sd, mean = mean))
}
x <- rnorm(100)
fun(x)
Run Code Online (Sandbox Code Playgroud)
在这里,我希望在运行fun(x)并且计算sd但不报告时报告平均值(当我从列表中取出sd时,我以后再也不能调用它).谢谢你的帮助!
我想在 Rnames.arg中将名称参数(例如 )加粗barplot()。例如:
bars <- as.table(c(1,2))
barplot(bars, names.arg = c("MMM", "NNN"), cex.names = 2)
Run Code Online (Sandbox Code Playgroud)
关于如何实现这一目标有什么想法吗?谢谢。
我正在计算 R 中字符串的匹配百分比。例如:
x <- "asdf"
y <- "fdjk"
Run Code Online (Sandbox Code Playgroud)
我希望返回 0.5(例如 2 个匹配,无论顺序如何)。任何想法都将不胜感激。