我需要在R中使用自定义字体,即"Archer"和ggplot2.Archer是我系统上安装的otf字体(Mac OSX Yosemite).
这个脚本(在这里找到:在ggplot2中修改字体)不适用于Archer,但适用于其他字体,如Arial.
install.packages("extrafont");library(extrafont)
font_import("Archer")
library(ggplot2)
qplot(1:10)+theme(text=element_text(family="Archer"))
Run Code Online (Sandbox Code Playgroud)
otf字体有什么问题吗?
我使用的dplyr替换value用NA,如果条件满足,但它把NA在地方,它不应该.
dput:
df <- structure(list(id = c("USC00231275", "USC00231275", "USC00231275",
"USC00231275", "USC00231275", "USC00231275", "USC00231275", "USC00231275",
"USC00231275", "USC00231275"), element = c("TMAX", "TMIN", "TMAX",
"TMIN", "TMAX", "TMIN", "TMAX", "TMIN", "TMAX", "TMIN"), year = c(1937,
1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937), month = c(5,
5, 5, 5, 5, 5, 5, 5, 5, 5), day = c(1, 1, 2, 2, 3, 3, 4, 4, 5,
5), date = structure(c(-11933, -11933, -11932, -11932, -11931,
-11931, …Run Code Online (Sandbox Code Playgroud) 数据框看起来像这样
df = data.frame(name = c("A","B","C"),
exam1 = c(2,6,4),
exam2 = c(3,5,6),
exam3 = c(5,3,3),
exam4 = c(1,NA,5))
Run Code Online (Sandbox Code Playgroud)
我想提取每个“名字”的前 3 个考试成绩,并使用apply()或 dplyr rowwise()函数找到它们的平均值。
我试图从互联网上获取有关企业的一些信息.大部分信息都位于此页面:http://appscvs.supercias.gob.ec/portalInformacion/sector_societario.zul,页面如下所示:
在这个页面中,我必须单击选项卡Busqueda de Companias,然后有趣的一面开始.当我点击时,我得到下一个屏幕:
在这个页面中,我必须设置选项Nombre,然后我必须插入一个带有名称的字符串.例如,我将添加字符串PROAÑO & ASOCIADOS CIA. LTDA.,我将获得下一个屏幕:
在这个屏幕中,我有这个企业的信息.然后,我必须单击选项卡Informacion Estados Financieros,我将进入下一个屏幕:

在这个最终屏幕中,我必须单击选项卡Estado Situacion,我将从列中的企业获取信息Codigo de la cuenta contable,Nombre de la cuenta contable并且Valor.我想将这些信息保存在数据框中.我发现的大多数复杂的一面都是在我必须设置元素Nombre,插入一个字符串,然后Buscar点击直到找到标签时开始的Informacion Estados Financieros.我尝试过使用html_session和html_form从rvest包中,但元素是空的.
你能帮我解决一下这个问题吗?
我试图在一些将在.rmd文件中显示的图中添加标题,但添加的标题不是非常美观.如果我只是在.rmd文件而不是绘图中包含标题会更好看.有什么方法可以让字幕在ggplot2中看起来更漂亮吗?
library(ggplot2)
data <- data.frame(col = c("left", "right"),
row = c("first", "second", "third", "fourth"),
x = rep.int(1,4),
y = rep.int(1,4))
data$col <- as.character(data$col)
data$row <- as.character(data$row)
caption <- paste(strwrap("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. …Run Code Online (Sandbox Code Playgroud) 我的热图继续变得越来越复杂.融化数据的一个示例:
head(df2)
Class Subclass Family variable value
1 A chemosensory family_1005117 caenorhabditis_elegans 10
2 A chemosensory family_1011230 caenorhabditis_elegans 4
3 A chemosensory family_1022539 caenorhabditis_elegans 10
4 A other family_1025293 caenorhabditis_elegans NA
5 A chemosensory family_1031345 caenorhabditis_elegans 10
6 A chemosensory family_1033309 caenorhabditis_elegans 10
tail(df2)
Class Subclass Family variable value
6496 C class c family_455391 trichuris_muris 1
6497 C class c family_812893 trichuris_muris NA
6498 F class f family_225491 trichuris_muris 1
6499 F class f family_236822 trichuris_muris 1
6500 F class …Run Code Online (Sandbox Code Playgroud) 我试图绘制计数v/s月
ggplot(dat, aes(x=month, y=count,group=region)) +
geom_line(data=mcount[mcount$region == "West coast", ],colour="black",stat="identity", position="dodge")+
geom_point(data=mcount[mcount$region == "West coast", ],colour="black", size=2, shape=21, fill="white")+
theme_bw()+
theme(legend.key = element_rect(colour = "black")) +
guides(fill = guide_legend(override.aes = list(colour = NULL)))+
ggsave("test.png",width=6, height=4,dpi=300)
Run Code Online (Sandbox Code Playgroud)
但是我想按照时间顺序从1月到12月订购几个月.我怎么能这么做呢?
dput
structure(list(region = structure(c(6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, …Run Code Online (Sandbox Code Playgroud) 我有 13 个属于不同组的列表:
A组(列表1)
B组(清单2)、(清单3)、(清单4)、(清单5)、(清单6)
C组(清单7)、(清单8)、(清单9)、(清单10)、(清单11)
D组(列表12),(列表13)
所有组的总和必须为 1
A 组可以取 0-0.7 之间的值
B 组可以取 0-0.6 之间的值
C组可以取0-0.9之间的值
D组可以取0-0.1的值
我想找到这些列表可以在不超出其组限制的情况下进行的所有不同组合。
例如:
如果对于一个组合 List2 element = 0.6,List3、List4、List5 和 List6 必须为 0
有没有简单的方法来做到这一点?(我可以使用 R 或 Python)
(列表采用从 0 到其组限制的值,增量为.1)
# i.e.
List1=[0.0,0.1,0.2,...,0.7]
List2 = [0.0,0.1,0.2,...,0.6]
# etc.
Run Code Online (Sandbox Code Playgroud) 我的数据如下所示:
我想确定每个观察所属的"下降趋势",所以我可以对它们进行分组并做一些事情,比如制作这个图:
我区分"下降趋势"的逻辑是,当下一个观测值具有更高的测量值时,它们就会结束.
我已经写了一个循环来做这个,但我想知道是否有更好的方法来使用其中一个apply函数或类似的东西.
##Create sample data
df <- data.frame(timestamp = seq(1:20),
measurement = seq(10, 1, by = -1))
## This is the for loop I'm hoping to improve
df$downward.trend.seq <- 0
seq <- 1
for(i in 1:nrow(df)){
df$downward.trend.seq[i] <- seq
if (i < nrow(df) & df$measurement[i] < df$measurement[i+1]) {
seq <- seq + 1
}
}
## Code for plots
library(ggplot2)
library(dplyr)
ggplot(df, aes(x = timestamp, y = measurement)) + geom_point()
ggplot(df, aes(x = timestamp, y = …Run Code Online (Sandbox Code Playgroud) 我试图回答有关为data.table对象创建非标准评估函数并进行分组求和的一个很好的问题。Akrun提出了一个可爱的答案,在此我将对其进行简化:
akrun <- function(data, var, group){
var <- substitute(var)
group <- substitute(group)
data[, sum(eval(var)), by = group]
}
library(data.table)
mt = as.data.table(mtcars)
akrun(mt, cyl, mpg)
# group V1
# 1: 6 138.2
# 2: 4 293.3
# 3: 8 211.4
Run Code Online (Sandbox Code Playgroud)
我也在研究一个答案,并且得到了几乎相同的答案,但是substitutes与其他答案保持一致。我的导致错误:
gregor = function(data, var, group) {
data[, sum(eval(substitute(var))), by = substitute(group)]
}
gregor(mt, mpg, cyl)
# Error in `[.data.table`(data, , sum(eval(substitute(var))), by = substitute(group)) :
# 'by' or 'keyby' must evaluate to vector or list …Run Code Online (Sandbox Code Playgroud) r ×10
ggplot2 ×4
dplyr ×2
data.table ×1
dataframe ×1
facet ×1
fonts ×1
heatmap ×1
iteration ×1
macos ×1
permutation ×1
python ×1
r-markdown ×1
rvest ×1
typeface ×1