标题很好涵盖它。 我有两个关于尺寸和颜色的传说,希望在图的上面和上面有一个。 这是可能的,如果是的话,如何 TIA
我正在使用R中的一个非常大的数据集,并且一直在使用dataframe,并决定切换到data.tables以帮助加速操作。 我无法理解的J操作,特别是我试图生成虚拟variables,但我不知道如何编码data.tables []内的条件操作。 MWE: test <- data.table("index"=rep(letters[1:10],100),"var1"=rnorm(1000,0,1)) 我想要做的就是将列a到j添加为虚拟variables,使得列a在index == "a"时具有值1 ,否则为0 。 在data.frame环境中,它看起来像这样: test$a <- 0 test$a[test$index=='a'] <- 1
我是R新手。如果这个问题有明显的答案,请原谅我,但是我一直没能find解决办法。 我有SAS的经验,可能只是以错误的方式思考这个问题。 我有一个来自数百个科目的重复测量的数据集,每个科目都有不同年龄的多个测量值。 每个主题由一个IDvariables标识。 我想每个单独的主题(ID)绘制每个测量(让我们说身体重量)由年龄。 我用ggplot2做这样的事情: ggplot(data = dataset, aes(x = AGE, y = WEIGHT )) + geom_line() + facet_wrap(~ID) 这适用于less量的主题,但不适用于整个数据集。 我也尝试过这样的事情: ggplot(data=data, aes(x = AGE,y = BW, group = ID, colour = ID)) + geom_line() 这也适用于less数科目,但数百个科目无法阅读。 我试图使用这样的代码子集: temp <- split(dataset,dataset$ID) 但我不确定如何使用最终的数据集。 或者也许有一种方法可以简单地调整facet_wrap,以便创build单个图块? 谢谢!
我最近想到了使用Tableau Public在它上面使用背景图和地图数据是多么容易。 这是从他们的网站的过程。 正如你所看到的,这是相当直接的,你只需告诉软件你想要使用什么图像以及如何定义坐标。 R中的过程是否简单? 什么是最好的方法?
我开始在R中使用data.table包来提高我的代码的性能。 我正在使用下面的代码: sp500 <- read.csv('../rawdata/GMTSP.csv') days <- c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday") # Using data.table to get the things much much faster sp500 <- data.table(sp500, key="Date") sp500 <- sp500[,Date:=as.Date(Date, "%m/%d/%Y")] sp500 <- sp500[,Weekday:=factor(weekdays(sp500[,Date]), levels=days, ordered=T)] sp500 <- sp500[,Year:=(as.POSIXlt(Date)$year+1900)] sp500 <- sp500[,Month:=(as.POSIXlt(Date)$mon+1)] 我注意到,与其他创build工作日的函数相比,由as.Date函数完成的转换非常缓慢。为什么? 有更好/更快的解决scheme,如何转换成date格式? (如果你问我是否真的需要date格式,可能是的,因为然后使用ggplot2来绘制情节,就像这种types的数据一样。 更确切地说 > system.time(sp500 <- sp500[,Date:=as.Date(Date, "%m/%d/%Y")]) user system elapsed 92.603 0.289 93.014 > system.time(sp500 <- […]
x = seq(0.1,10,0.1) y <- if (x < 5) 1 else 2 我会希望if在每一个案件上运作,而不是在整个vector上运作。 我需要改变什么?
我经常碰到这种情况,所以我觉得应该有一个很好的习惯用法。 假设我有一个包含“product”的一系列属性的data.frame。 我也有一个把产品翻译成品牌+尺寸的钥匙。 产品代码1-3是Tylenol,4-6是Advil,7-9是Bayer,10-12是Generic。 什么是最快的(在人的时间方面)来编码呢? 如果有3个或更less的类别,我倾向于使用嵌套的ifelse ,如果有3个或更less的类别,则input数据表并合并。 Stata有一个recode命令 ,对于这样的事情来说非常漂亮,不过我认为它会促进数据代码混合太多。 dat <- structure(list(product = c(11L, 11L, 9L, 9L, 6L, 1L, 11L, 5L, 7L, 11L, 5L, 11L, 4L, 3L, 10L, 7L, 10L, 5L, 9L, 8L)), .Names = "product", row.names = c(NA, -20L), class = "data.frame")
我将maps包中的世界地图覆盖到ggplot2栅格几何上。 然而,这个栅格并不是以主子午线(0度)为中心,而是在180度(大致白令海和太平洋)。 以下代码获取地图并重新映射180度地图: require(maps) world_map = data.frame(map(plot=FALSE)[c("x","y")]) names(world_map) = c("lon","lat") world_map = within(world_map, { lon = ifelse(lon < 0, lon + 360, lon) }) ggplot(aes(x = lon, y = lat), data = world_map) + geom_path() 产生以下输出: 非常明显,在主子午线的一端或另一端的多边形之间画线。 我目前的解决方法是用NA代替接近主子午线的点,用下面的withinreplace上面的内容: world_map = within(world_map, { lon = ifelse(lon < 0, lon + 360, lon) lon = ifelse((lon < […]
我想使用dplyr来参数化下面的计算,它发现哪个Sepal.Length值与多个Sepal.Length值相关联: library(dplyr) iris %>% group_by(Sepal.Length) %>% summarise(n.uniq=n_distinct(Sepal.Width)) %>% filter(n.uniq > 1) 通常我会写这样的东西: not.uniq.per.group <- function(data, group.var, uniq.var) { iris %>% group_by(group.var) %>% summarise(n.uniq=n_distinct(uniq.var)) %>% filter(n.uniq > 1) } 但是,这种方法会引发错误,因为dplyr使用非标准评估 。 这个函数应该如何写?
library(ggplot2) df <- data.frame(x=1:10, y=rnorm(10)) p1 <- ggplot(df, aes(x,y)) + geom_point() plist <- list(p1,p1,p1,p1,p1) # In my real example,a plot function will fit a ggplot to a list of datasets #and return a list of ggplots like the example above. 我想在gridExtra使用grid.arrange()来安排图。 如果plist的地块数量是可变的,我将如何做到这一点? 这工作: grid.arrange(plist[[1]],plist[[2]],plist[[3]],plist[[4]],plist[[5]]) 但我需要一个更一般的解决scheme。 想法?