这可能是一个非常基本的问题,但我找不到它.假设我有一个数据框d,其行号无序,如下所示:
Signal
4 9998
3 549
1 18
5 2.342
2 0.043
Run Code Online (Sandbox Code Playgroud)
如何通过增加行索引号来对此进行排序以获得以下内容?
Signal
1 18
2 0.043
3 549
4 9998
5 2.342
Run Code Online (Sandbox Code Playgroud) 我正在努力解决ggplot中scale_shape_manual和scale_colour_manual的问题.从ggplot help(scale_colour_manual)中重新获取示例,我们得到以下两行:
p <- qplot(mpg, wt, data = mtcars, colour = factor(cyl))
p + scale_colour_manual(values = c("red","blue", "green"))
Run Code Online (Sandbox Code Playgroud)
他们工作正常,我可以做任何我想做的事情.但是,如果我决定创建一个像这样的线,这将创建一个组合层的对象
h <- p + scale_colour_manual(values = c("red","blue", "green"))
Run Code Online (Sandbox Code Playgroud)
然后任何命令都会提示我一条警告信息"将class(x)设置为多个字符串("manual","discrete",...);结果将不再是S4对象".即使是非常简单的一个:
a = 2
Run Code Online (Sandbox Code Playgroud)
但是,如果我重新编译它的最后一行它.有人有同样的问题吗?你能帮帮我吗?
以下评论是一个可重复的例子
library(ggplot2)
library(Hmisc)
data(mpg)
p <- qplot(mpg, wt, data = mtcars, colour = factor(cyl))
h <- p + scale_colour_manual(values = c("red","blue", "green"))
a = 2
Run Code Online (Sandbox Code Playgroud)
更新 - 显然它只是一个版本问题,以下版本似乎不能一起工作:R版本3.0.3(2014-03-06)Hmisc_3.14-3和ggplot2_0.9.3.1.有人可能会考虑分离(包:Hmisc,unload = TRUE)或只是接受警告.
谢谢R
我有一个data.table对象,其中包含多个指定唯一案例的列.在下面的小示例中,变量" name"," job"和" sex"指定唯一ID.我想添加缺失的行,以便每个case都有一行用于另一个变量的每个可能实例," from"(类似于expand.grid).
library(data.table)
set.seed(1)
mydata <- data.table(name = c("john","john","john","john","mary","chris","chris","chris"),
job = c("teacher","teacher","teacher","teacher","police","lawyer","lawyer","doctor"),
sex = c("male","male","male","male","female","female","male","male"),
from = c("NYT","USAT","BG","TIME","USAT","BG","NYT","NYT"),
score = rnorm(8))
setkeyv(mydata, cols=c("name","job","sex"))
mydata[CJ(unique(name, job, sex), unique(from))]
Run Code Online (Sandbox Code Playgroud)
这是当前的data.table对象:
> mydata
name job sex from score
1: john teacher male NYT -0.6264538
2: john teacher male USAT 0.1836433
3: john teacher male BG -0.8356286
4: john teacher male TIME 1.5952808
5: mary police female USAT 0.3295078
6: chris lawyer female …Run Code Online (Sandbox Code Playgroud) 我想定时编织块并记录使用LaTeX输出中的注释渲染它们需要多长时间.
我试过以下钩子:
now = Sys.time()
knit_hooks$set(timeit = function(before) {
if (before) { now <<- Sys.time() }
else {
paste("%", sprintf("Chunk rendering time: %s seconds.\n", round(Sys.time() - now, digits = 3)))
}
})
Run Code Online (Sandbox Code Playgroud)
并且它确实产生了正确的时间注释,但问题是它被包装在kframe中,这导致LaTeX输出中的丑陋空白:
\begin{kframe}
% Chunk rendering time: 12.786 seconds.
\end{kframe}
Run Code Online (Sandbox Code Playgroud)
有没有办法产生解开的评论?
我的实际数据看起来像
8/8/2013 15:10
7/26/2013 10:30
7/11/2013 14:20
3/28/2013 16:15
3/18/2013 15:50
Run Code Online (Sandbox Code Playgroud)
当我从excel文件中读取时,R读为,
41494.63
41481.44
41466.60
41361.68
41351.66
Run Code Online (Sandbox Code Playgroud)
所以我用了,as.POSIXct(as.numeric(x[1:5])*86400, origin="1899-12-30",tz="GMT")我得到了,
2013-08-08 15:07:12 GMT
2013-07-26 10:33:36 GMT
2013-07-11 14:24:00 GMT
2013-03-28 16:19:12 GMT
2013-03-18 15:50:24 GMT
Run Code Online (Sandbox Code Playgroud)
为什么时间有差异?如何克服它?
我有一个数据帧df:
structure(list(y = c(2268.14043972082, 2147.62290922552, 2269.1387550775,
2247.31983098201, 1903.39138268307, 2174.78291538358, 2359.51909126411,
2488.39004804939, 212.851575751527, 461.398994384333, 567.150629704352,
781.775113821961, 918.303706148872, 1107.37695799186, 1160.80594193377,
1412.61328924168, 1689.48879626486, 260.737164468854, 306.72700499362,
283.410379620422, 366.813913489692, 387.570173754128, 388.602676983443,
477.858510450125, 128.198042456082, 535.519377609133, 1028.8780498564,
1098.54431357711, 1265.26965941035, 1129.58344809909, 820.922447928053,
749.343583476846, 779.678206156474, 646.575242339517, 733.953282899613,
461.156280127354, 906.813018662913, 798.186995701282, 831.365377249207,
764.519073183124, 672.076289062505, 669.879217186302, 1341.47673353751,
1401.44881976186, 1640.27575962036), P = c(1750.51986303926,
1614.11541634798, 951.847023338079, 1119.3682884872, 1112.38984390156,
1270.65773075982, 1234.72262170166, 1338.46096616983, 1198.95775346458,
1136.69287367165, 1265.46480803983, 1364.70149818063, 1112.37006707489,
1346.49240261316, 1740.56677791104, 1410.99217295647, 1693.18871380948,
901.760176040232, 763.971046562772, 994.8699095021, 972.755147593882,
1011.41669411398, 643.705302958842, 537.54384616157, 591.212003320456,
464.405641604215, 0, 0, …Run Code Online (Sandbox Code Playgroud) 我想在闪避中订购酒吧geom_bar.你知道怎么处理吗?
我的代码:
ttt <- data.frame(typ=rep(c("main", "boks", "cuk"), 2),
klaster=rep(c("1", "2"), 3),
ile=c(5, 4, 6, 1, 8, 7))
ggplot()+
geom_bar(data=ttt, aes(x=klaster, y=ile, fill=typ),
stat="identity", color="black", position="dodge")
Run Code Online (Sandbox Code Playgroud)
示例图可以更好地理解问题:
是)我有的:

我想拥有什么:

我正在尝试计算此列表中的独特药物数量.
my_drugs=c('a', 'b', 'd', 'h', 'q')
Run Code Online (Sandbox Code Playgroud)
我有以下字典,它给了我药物同义词,但它没有设置,所以定义只适用于独特的药物:
dictionary <- read.table(header=TRUE, text="
drug names
a b;c;d;x
x b;c;q
r h;g;f
l m;n
")
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,列表中有2种独特的药物(因为a,直接或间接地具有同义词b,d,q).同义词的同义词计为同义词.
我尝试过的方法是首先制作一本左侧只有独特药物的字典.要做到这一点,我会循环通过字典$ drug,grep in dictionary $ drug和dictionary $ synonyms,取出那些并取代药物$同义词的联合,然后从字典中删除其他行.
bigdf=dictionary
small_df=data.frame("drug"=NA,"names"=NA)
for(i in 1:nrow(bigdf)){
search_term=sprintf("*%s*",bigdf$drug[i])
index=grep(search_term,bigdf$names)
list=bigdf$names[index]
list=Reduce(union,list)
list=paste(list, collapse=";")
if(!list==""){
new_row=data.frame("drug"=bigdf$drug[index][1],"names"=list)
small_df=rbind(small_df,new_row)
#small_df
bigdf=bigdf[-index,]
#dim(bigdf)
}
else{
new_row=data.frame("drug"=bigdf$drug[index][1],"names"="alreadycounted")
small_df=rbind(small_df,new_row)
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用(small_df中缺少一些药物),即使它我不知道如何使用我的新词典计算我的列表中的独特药物数量.
我如何计算my_drugs中独特药物的数量?
感谢您的帮助,如果需要进一步说明,请与我们联系.
数据集大小:my_drugs中的200个元素,字典中的2000个行,每个药物有10-12个同义词.
我有一个重复序列的数据集TRUE,我希望根据某些条件标记 - 依据id序列的增量值.A FALSE打破TRUEs 的序列,并且第一个FALSE打破任何给定序列的序列TRUE应包括在该序列中.FALSEs之间TRUE的连续s 是无关紧要的,标记为0.
例如:
> test
id logical sequence
1 1 TRUE 1
2 1 TRUE 1
3 1 FALSE 1
4 1 TRUE 2
5 1 TRUE 2
6 1 FALSE 2
7 1 TRUE 3
8 2 TRUE 1
9 2 TRUE 1
10 2 TRUE 1
11 2 FALSE 1
12 2 TRUE 2
13 2 TRUE 2
14 …Run Code Online (Sandbox Code Playgroud) 我想一次用特定的其他值替换向量中的不同值.
在我正在解决的问题中:
以便:
x <- c(4, 2, 0, 7, 5, 7, 8, 9)
x
[1] 4 2 0 7 5 7 8 9
Run Code Online (Sandbox Code Playgroud)
将被转换为:
[1] 8 4 0 5 1 5 7 9
Run Code Online (Sandbox Code Playgroud)
更换后.
我尝试过使用:
x[x == 1] <- 2
x[x == 2] <- 4
Run Code Online (Sandbox Code Playgroud)
等等,但这导致1被7替换.
没有使用任何软件包,这个问题最简单的解决方案是什么?