小编Jaa*_*aap的帖子

R - 如何按行索引号重新排序数据

这可能是一个非常基本的问题,但我找不到它.假设我有一个数据框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)

indexing numbers row r dataframe

7
推荐指数
2
解决办法
2万
查看次数

S4对象问题与scale_shape_manual

我正在努力解决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

r shape scale ggplot2

7
推荐指数
0
解决办法
1685
查看次数

根据多个键控列将缺少的行添加到data.table

我有一个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)

merge r cross-join data.table

7
推荐指数
1
解决办法
871
查看次数

钩住时间编织块

我想定时编织块并记录使用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)

有没有办法产生解开的评论?

latex r knitr

7
推荐指数
1
解决办法
751
查看次数

使用Excel在`as.POSIXct`中的数据差异

我的实际数据看起来像

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)

为什么时间有差异?如何克服它?

excel time datetime r

7
推荐指数
1
解决办法
1582
查看次数

在ggplot2中图例和图例上方的图例下方绘制图例

我有一个数据帧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)

r ggplot2 legend-properties

7
推荐指数
1
解决办法
6537
查看次数

ggplot2,geom_bar,闪避,条形顺序

我想在闪避中订购酒吧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)

示例图可以更好地理解问题:

是)我有的:

我想拥有什么:

r ggplot2 geom-bar

7
推荐指数
1
解决办法
2473
查看次数

当某些元素是彼此的同义词时,计算唯一元素

我正在尝试计算此列表中的独特药物数量.

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个同义词.

r unique overlap synonym

7
推荐指数
1
解决办法
96
查看次数

具有中断的增量序列

我有一个重复序列的数据集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)

r run-length-encoding dplyr data.table

7
推荐指数
1
解决办法
156
查看次数

如何一次替换多个值

我想一次用特定的其他值替换向量中的不同值.

在我正在解决的问题中:

  • 1应该替换为2,
  • 2与4,
  • 3与6,
  • 4与8,
  • 5与1,
  • 6与3,
  • 7与5和
  • 8与7.

以便:

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替换.

没有使用任何软件包,这个问题最简单的解决方案是什么?

r

7
推荐指数
2
解决办法
1743
查看次数