我试图用R中的Sankey图来可视化我的数据流.
我发现这个博客文章链接到一个产生Sankey图的R脚本,不幸的是它非常原始且有些局限(见下面的示例代码和数据).
有没有人知道其他脚本 - 或者甚至是一个更开发的包?我的最终目标是通过图表组件的相对大小来可视化数据流和百分比,就像在这些Sankey Diagrams示例中一样.
我在r-help列表上发布了一个类似的问题,但是经过两周没有任何回复,我在stackoverflow上尝试运气.
谢谢,埃里克
PS.我知道并行集图,但这不是我想要的.
# thanks to, https://tonybreyal.wordpress.com/2011/11/24/source_https-sourcing-an-r-script-from-github/
sourc.https <- function(url, ...) {
# install and load the RCurl package
if (match('RCurl', nomatch=0, installed.packages()[,1])==0) {
install.packages(c("RCurl"), dependencies = TRUE)
require(RCurl)
} else require(RCurl)
# parse and evaluate each .R script
sapply(c(url, ...), function(u) {
eval(parse(text = getURL(u, followlocation = TRUE,
cainfo = system.file("CurlSSL", "cacert.pem",
package = "RCurl"))), envir = .GlobalEnv)
} )
}
# from …Run Code Online (Sandbox Code Playgroud) 如何为id以下数据框中的每个唯一选择第一行和最后一行?
tmp <- structure(list(id = c(15L, 15L, 15L, 15L, 21L, 21L, 22L, 22L,
22L, 23L, 23L, 23L, 24L, 24L, 24L, 24L), d = c(1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), gr = c(2L, 1L,
1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L), mm = c(3.4,
4.9, 4.4, 5.5, 4, 3.8, 4, 4.9, 4.6, 2.7, 4, 3, 3, 2, 4, 2), area = c(1L, …Run Code Online (Sandbox Code Playgroud) Ben Bolker的paste2解决方案产生了一个""粘贴的字符串包含NA在同一位置的时间.像这样,
> paste2(c("a","b", "c", NA), c("A","B", NA, NA))
[1] "a, A" "b, B" "c" ""
Run Code Online (Sandbox Code Playgroud)
第四个元素是一个""而不是NA像这样,
[1] "a, A" "b, B" "c" NA
Run Code Online (Sandbox Code Playgroud)
我正在为能解决这个问题的人提供这笔小额奖金.
我已经阅读了帮助页面?paste,但我不明白如何让R忽略NAs.我做了以下,
foo <- LETTERS[1:4]
foo[4] <- NA
foo
[1] "A" "B" "C" NA
paste(1:4, foo, sep = ", ")
Run Code Online (Sandbox Code Playgroud)
得到
[1] "1, A" "2, B" "3, C" "4, NA"
Run Code Online (Sandbox Code Playgroud)
我想得到什么,
[1] "1, A" "2, B" "3, C" "4" …Run Code Online (Sandbox Code Playgroud) 我正在使用Paul Bleicher的日历热图来随着时间的推移可视化一些事件,我有兴趣添加 黑白填充图案而不是(或在颜色编码之上)以增加日历热图的可读性.黑白打印.
以下是Calendar Heatmap颜色的示例,

这是黑白相间的样子,

很难区分黑人和白人的各个级别.
是否有一种简单的方法可以让R为6级而不是颜色添加某种模式?
source("http://blog.revolution-computing.com/downloads/calendarHeat.R")
stock <- "MSFT"
start.date <- "2012-01-12"
end.date <- Sys.Date()
quote <- paste("http://ichart.finance.yahoo.com/table.csv?s=", stock, "&a=", substr(start.date,6,7), "&b=", substr(start.date, 9, 10), "&c=", substr(start.date, 1,4), "&d=", substr(end.date,6,7), "&e=", substr(end.date, 9, 10), "&f=", substr(end.date, 1,4), "&g=d&ignore=.csv", sep="")
stock.data <- read.csv(quote, as.is=TRUE)
# convert the continuous var to a categorical var
stock.data$by <- cut(stock.data$Adj.Close, b = 6, labels = F)
calendarHeat(stock.data$Date, stock.data$by, varname="MSFT Adjusted Close")
Run Code Online (Sandbox Code Playgroud)
我想念一种以透明的方式将数据添加到SO答案的方法.我的经验是,该structure对象dput()有时会使没有经验的用户感到不必要.但是我没有耐心每次都将它复制/粘贴到一个简单的数据框中,并希望自动化它.类似的东西dput(),但是在简化版中.
说我通过复制/粘贴和其他一些hos有这样的数据,
Df <- data.frame(A = c(2, 2, 2, 6, 7, 8),
B = c("A", "G", "N", NA, "L", "L"),
C = c(1L, 3L, 5L, NA, NA, NA))
Run Code Online (Sandbox Code Playgroud)
看起来像这样,
Df
#> A B C
#> 1 2 A 1
#> 2 2 G 3
#> 3 2 N 5
#> 4 6 <NA> NA
#> 5 7 L NA
#> 6 8 L NA
Run Code Online (Sandbox Code Playgroud)
在一个整数内,一个因子和一个数字向量,
str(Df)
#> 'data.frame': 6 obs. of 3 variables:
#> …Run Code Online (Sandbox Code Playgroud) 有没有办法抖动线路geom_line()?我知道它有点违背了这个情节的目的,但如果你有一个几行的情节,并希望它们都表明它可以很方便.也许这个可见性问题的其他解决方案.
请参阅下面的代码,

A <- c(1,2,3,5,1)
B <- c(3,4,1,2,3)
id <- 1:5
df <- data.frame(id, A, B)
# install.packages(reshape2)
require(reshape2) # for melt
dfm <- melt(df, id=c("id"))
# install.packages(ggplot2)
require(ggplot2)
p1 <- ggplot(data = dfm, aes(x = variable, y = value, group = id,
color= as.factor(id))) + geom_line() + labs(x = "id # 1 is hardly
visible as it is covered by id # 5") + scale_colour_manual(values =
c('red','blue', 'green', 'yellow', 'black'))
p2 <- ggplot(subset(dfm, id != …Run Code Online (Sandbox Code Playgroud) 如果我加载data(mtcars)它带有一个非常整洁的码本,我可以使用它?mtcars.
我有兴趣以相同的方式记录我的数据,并且将整齐的码本保存为pdf.
是否可以保存"内容" ?mtcars以及如何创建?
谢谢,埃里克
PS我确实读过这个帖子.
我正在寻找仅使用R的解决方案; 不幸的是我不能依赖其他软件(例如Tex)
非常感谢大家的答案.
阅读这些答案,我意识到我应该让我的优先事项更加清晰.因此,这里列出了我对这个问题的优先顺序.
我目前正在使用label()Hmisc包标记我的变量,并可能最终使用Label()相同的包编写.txt代码簿.
我正在寻找一个tidyverse -solution,它可以计算数据数据中TF组内唯一值的出现次数.当我想要从那一点向前和向后计算变化时.此计数应存储在一个新变量中,以便为每个唯一的移位保存加号和减号.idtblTFPM##PM##TF
这个问题类似于我之前提出的问题,但在这里我特意寻找使用tidyverse工具的解决方案.Uwe data.table 在这里使用了一个优雅的答案.
如果这个问题违反了任何SO政策,请告诉我,我会很乐意重新打开我的初步问题,或者附上一个赏金问题.
用一个最小的工作例来说明我的问题.我有这样的数据,
# install.packages(c("tidyverse"), dependencies = TRUE)
library(tibble)
tbl <- tibble(id = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7),
TF = c(NA, 0, NA, 0, 0, 1, 1, 1, NA, 0, 0, …Run Code Online (Sandbox Code Playgroud) 我有兴趣指定缺失值的类型.我有不同类型的丢失的数据,我试图将这些值编码为R中缺少,但我正在寻找一个解决方案,我仍然可以区分它们.
假设我有一些看起来像这样的数据,
set.seed(667)
df <- data.frame(a = sample(c("Don't know/Not sure","Unknown","Refused","Blue", "Red", "Green"), 20, rep=TRUE), b = sample(c(1, 2, 3, 77, 88, 99), 10, rep=TRUE), f = round(rnorm(n=10, mean=.90, sd=.08), digits = 2), g = sample(c("C","M","Y","K"), 10, rep=TRUE) ); df
# a b f g
# 1 Unknown 2 0.78 M
# 2 Refused 2 0.87 M
# 3 Red 77 0.82 Y
# 4 Red 99 0.78 Y
# 5 Green 77 0.97 M
# 6 Green 3 0.99 K …Run Code Online (Sandbox Code Playgroud) 我在"经济学人"的网站上看到了这些图片,并想知道是否有可能制作出一个geom_bar()嵌入这种说明性图标的图片?(下面的虚拟数据)

虚拟数据,
require(ggplot2)
# Generate data
df3 <- data.frame(units = c(1.3, 1.8, 2.7, 4.2, 4.7, 6.7, 20),
what = c('Wikipedia', 'London Olympic Park', 'Aircraft carrier',
'The Great Pyramid', 'Stonehenge', 'Burj Khalifas',
'Empire State Building'))
# make gs an ordered factor
df3$what <- factor(df3$what, levels = df3$what, ordered = TRUE)
#plots
ggplot(df3, aes(what, units)) + geom_bar(fill="white", colour="darkgreen",
alpha=0.5, stat="identity") + coord_flip() + scale_x_discrete() +
scale_y_continuous(breaks=seq(0, 20, 2)) + theme_bw() +
theme(axis.title.x = element_blank(), axis.title.y …Run Code Online (Sandbox Code Playgroud)